Как правильно использовать PDO если несколько php скриптов?

При использовании PHP PDO (PHP Data Objects) для взаимодействия с базой данных из нескольких PHP-скриптов, есть несколько лучших практик, которые следует учитывать.

1. Установка соединения с базой данных:
- Создайте отдельный файл для установки соединения с базой данных (например, db_connect.php) и определите переменные соединения, такие как имя хоста, имя базы данных, имя пользователя и пароль.
- Используйте статический метод try-catch для отлова исключений при установке соединения. Если возникнет ошибка, выведите сообщение об ошибке и прервите выполнение скрипта.
- Создайте экземпляр класса PDO, передавая в конструкторе параметры соединения, и сохраните его в переменную для дальнейшего использования в других скриптах.

2. Чтение и запись данных:
- В каждом PHP-скрипте, где вам нужно взаимодействовать с базой данных, подключитесь к базе данных, используя require_once для файла db_connect.php (или другое название файла, где вы установили соединение).
- Воспользуйтесь подготовленными выражениями для защиты от SQL-инъекций и повышения производительности выполнения запросов.
- Используйте методы execute() и fetch() для выполнения запросов и получения результатов. Обязательно проверьте возвращаемое значение после выполнения каждого запроса, чтобы убедиться, что он успешно выполнился.
- Закрывайте соединение с базой данных после выполнения всех операций, используя метод unset() для удаления объекта PDO.

Пример использования PDO в нескольких PHP-скриптах:

1. db_connect.php:

<?php
$host = 'localhost';
$dbname = 'mydb';
$user = 'username';
$pass = 'password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    die();
}
?>

2. read_data.php:

<?php
require_once 'db_connect.php';

try {
    $stmt = $pdo->prepare('SELECT * FROM my_table');
    $stmt->execute();

    while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        echo $row['column1'] . '<br>';
    }
} catch (PDOException $e) {
    echo 'Error: ' . $e->getMessage();
    die();
}

unset($pdo);
?>

3. write_data.php:

<?php
require_once 'db_connect.php';

$data = "Some data";

try {
    $stmt = $pdo->prepare('INSERT INTO my_table (column1) VALUES (:data)');
    $stmt->bindParam(':data', $data);
    $stmt->execute();

    echo 'Data inserted successfully!';
} catch (PDOException $e) {
    echo 'Error: ' . $e->getMessage();
    die();
}

unset($pdo);
?>

Это лишь примеры, и в реальных проектах может быть гораздо больше действий с базой данных. Важно следовать принципу "одно соединение - один экземпляр объекта PDO" и закрывать соединение после выполнения всех операций. Также рекомендуется обработка исключений, чтобы обеспечить надежность и безопасность взаимодействия с базой данных.