Что такое PDO и почему я должен его использовать? - PullRequest
7 голосов
/ 08 августа 2011

Люди продолжают упоминать, что я должен использовать PDO в своем PHP при работе с MySQL, я никогда не слышал об этом раньше.

Что такое PDO?Как это используется и каковы плюсы и минусы?

Спасибо,

Ответы [ 3 ]

14 голосов
/ 08 августа 2011

Рассматривайте PDO как встроенный класс, поставляемый в комплекте с PHP, чтобы вам было очень легко взаимодействовать с вашей базой данных. при разработке PHP-приложения вам нужно позаботиться о многих вещах, таких как установление соединения, создание запроса, извлечение ресурса преобразования результата в массив, экранирование MySQL Injection с использованием mysql_real_escape_string(), теперь нужно многое позаботиться по крайней мере, но не в последнюю очередь рассмотрим ситуацию, когда вы хотите перейти с mysql на mysqli или MSSQL, для чего вам нужно пройти через каждую функцию и изменить каждую строку кода в соответствии с необходимостью. PDO устраняет все эти проблемы, предоставляя один централизованный класс.

Для уточнения взгляните на код ниже.

для установления соединения с MySQL с помощью PDO:

$dbh = new PDO('mysql:host='.HOST.';dbname='.DATABASE,USERNAME,PASSWORD); 

вот и все, соединение установлено, и вы можете повторно использовать $ dbh для выполнения запросов, например, чтобы получить результат от пользователя таблицы, вам просто нужно две строки кода.

$sth = $dbh->query('SELECT id,name,email FROM users');
$user = $sth->fetch(PDO::FETCH_ASSOC);

Теперь $user будет иметь все значения, извлеченные в виде ассоциативного массива.

Чтобы вставить значение в базу данных, вам нужно сделать следующее.

$sth = $dbh->prepare('INSERT INTO users(name,email) VALUES(:name, :email)');
$sth->bindParam(':name', 'My Name');
$sth->bindParam(':email', 'email@email.com');
$sth->execute();

Приведенный выше код использует именованный заполнитель, таким образом, PDO защитит вас от многих уязвимостей, поскольку он защитит вас от MySQL Injection. Чтобы начать, посмотрите на этот учебник Netttus, они очень хорошо объяснили его, эта статья объяснит все ваши дилеммы, касающиеся PDO

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

0 голосов
/ 08 августа 2011

PDO - это объектно-ориентированный класс для составления и выполнения запросов MySQL.Это может показаться дополнительным уровнем сложности, но на самом деле PDO позволяет вам писать запросы в вашем php проще и программно писать запросы (другой код создает для вас различные строки вашего запроса).

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

Если вы этого не сделаетечто касается безопасности (например, SQL-инъекция ), и вы можете писать естественные запросы MySQL, которые вам нужны, тогда вам не нужно об этом беспокоиться.Изучение этого может упростить ситуацию в будущем, когда вы будете работать над более структурированными проектами, использующими фреймворки.

0 голосов
/ 08 августа 2011

http://php.net/manual/en/book.pdo.php

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

PDO обеспечивает уровень абстракции доступа к данным, что означает, что независимо от того, какую базу данных вы используете, вы используете одни и те же функции выдавать запросы и получать данные. PDO не предоставляет базу данных абстракция; он не переписывает SQL и не эмулирует отсутствующие функции. Вы следует использовать полноценный слой абстракции, если вам нужен этот объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...