PHP: mysql v mysqli v pdo

Я читал некоторые вопросы относительно использования mysqli versus pdo для использования mysql в php.

Я видел такие вопросы, как mysqli или PDO – каковы плюсы и минусы? или Перемещение из mysql в mysqli или pdo? , которые имеют дело исключительно с mysqli v pdo. Меня не так интересует, какой из этих двух методов лучше.

Мне было интересно, почему следует избегать функций mysql_. Конечно, они находятся в процессе устаревания для документации PHP http://php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated , поток PHP PDO и MySQLi предлагает PDO и MySQLi более эффективны, а поток. В чем разница между MySQL, MySQLi и PDO? подразумевает, что эти новые методы более безопасны.

В целом, мне интересно, какие большие недостатки в методах mysql_ и какие причины есть для его устранения (я думаю, более конкретно, чем просто потому, что он устарел). Я планирую обновить мои затронутые сценарии и стал любопытно, почему этот старый метод устарел.

Благодаря!

Related of "PHP: mysql v mysqli v pdo"

Конструкция функции mysql_query такова, что вы должны быть осторожны, чтобы избежать каждого бита данных, которые вы вводите в нее, и если вы пропустите хотя бы одно, ваше приложение может быть уничтожено с помощью автоматического инструмента для поиска уязвимостей SQL ,

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

Функции mysql являются продуктом самых ранних дней PHP и значительно более ограничены, чем новые объектно-ориентированные функции, предлагаемые как mysqli в качестве опции, так и PDO по дизайну.

Существует ряд очень веских причин использовать один из этих двух новых интерфейсов, но самое главное, что функция mysql_query просто слишком mysql_query для использования в производственном коде. С этим вы всегда будете одной ошибкой от некоторых очень серьезных проблем.

Есть причина, по которой разрастаются базы данных с паролями и номерами кредитных карт. Наличие очевидной точки инъекции SQL делает почти слишком легко полностью захватить сайт.

Из выбора MySSQL API @ PHP.net :

 // mysqli $mysqli = new mysqli("example.com", "user", "password", "database"); $result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL"); $row = $result->fetch_assoc(); echo htmlentities($row['_message']); // PDO $pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password'); $statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL"); $row = $statement->fetch(PDO::FETCH_ASSOC); echo htmlentities($row['_message']); // mysql $c = mysql_connect("example.com", "user", "password"); mysql_select_db("database"); $result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL"); $row = mysql_fetch_assoc($result); echo htmlentities($row['_message']); 

Создание объекта, такого как mysqli и PDO, является рекомендуемым способом написания любого современного программного обеспечения. Разрыв mysql был выпущен для PHP версии 2.0 и с тех пор не был переписан. PHP 2.0 был выпущен в 1997 году, этого должно быть достаточно, чтобы объяснить, почему его не использовать.

Ну, для одного, функции mysql чрезвычайно подвержены SQL-инъекции, если вы неправильно очищаете ввод вручную. mysqli и pdo имеют параметризованные параметры оператора sql, избегая этого риска. На мой взгляд, у них также, как правило, лучший стиль кодирования.