В этой части учебника будет рассказано как происходит работа с PHP PDO, для тех кто не знает, это такая библиотека для работы с БД, главное его преимущество от mysqli, заключается в том, чт с её помощью можно работать с разными базами данных.
Также плюсом будет, то, что PDO более безопасное.
Как подключить PDO в PHP 7:
Для начала нужно разобрать как подключить PDO в РHP, делается это не много по другому, не так как в mysqli.
1 | $pdo = new PDO('mysql:host=localhost;dbname=test', 'root', ''); |
Как видите всё достаточно просто, первым параметром идут данные о БД, какая используется БД, сервер и имя, дальше двумя параметрами идёт имя пользователя и пароль.
Работа с PDO в PHP 7:
Теперь можно начать потихоньку работать с этой библиотекой, по началу всё будет точно также как и с mysqli.
1 2 3 4 5 6 7 8 | // Делаем MySQL запрос $users = $pdo -> query('SELECT * from users'); // Через foreach выводим всё на экран foreach($users as $row) { // Выводим на экран echo "Имя: {$row["name"]}; <br>Фамилия: {$row["surname"]}; <hr>"; } |
Как видите всё очень просто, в каком то смысле даже проще чем с mysqli.
Для отправки запроса используется используется метод query
, который возвращает некую сущность, со всеми возвращенными данными, для вывода используем цикл foreach
.
Безопасный запрос в PDO:
У выше показанного кода есть одна проблем, этого его безопасность, в том дела есть такое понятие SQL инъекции, это когда в форму ввели вместо, к примеру, логина, SQL код, который рушит всё БД, от них нужно защищаться.
Надо сказать, что не обязательно делать защиту на стороне сервера, также её можно сделать на стороне клиента, используя JavaScript, но, так как, тут изучаем серверный язык программирования, будет показываться как сделать это на PHP.
Код защиты от SQL инъекций:
Для этого создадим отдельную функцию, которая будет называться query
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | function query($sql, $params = [], $pdo) { // Сначала подготавливаем запрос для его изменений $stmt = $pdo -> prepare($sql); // Проверяем, есть ли параметры которые мы отправили if (!empty($params)) { // Цикл для подстановки данных foreach ($params as $key => $val) { // Подставляем данные $stmt -> bindValue(':'.$key, $val); } } // Подготавливаем запрос для выполнения $stmt -> execute(); // Возвращаем запрос return $stmt; } |
Здесь код очень сложный, поэтому расскажу только самое главное, это то, что по сути будем брать SQL запрос и заменять параметры из массива, вот как будет выглядеть остальная программа.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // Делаем SQL запрос $sql = "SELECT * FROM `users` WHERE `id`=:id"; // Параметры $params = array( 'id' => 2 ); // Запускаем нашу функцию $res = query($sql, $params, $pdo); // Получаем данные $res = $res -> fetchAll(PDO::FETCH_ASSOC); // Выводим на экран foreach($res as $row) { echo "Имя: {$row["name"]}; <br>Фамилия: {$row["surname"]}; <hr>"; } |
Теперь разберём программу, если вы приглядитесь, то перед где данную нужно заменить, ставится двоеточии и название, слитно, потом в массиве пишем параметры, ну и получаем данные через метод fetchAll(PDO::FETCH_ASSOC)
, ну а дальше как обычно выводим на экран.
Важно:
Ключ в массиве должен обязательно иметь имя такое же,
как и параметр который хотите заменить, только без двоеточие
Вот результат этой программы.
Вывод:
В этой части рассказали как происходит работа с PHP PDO, это последняя часть учебника PHP работа с базой данных в остальном тут нет не чего сложного.
Если вам надо больше информации про PDO, то заходите сюда.