PDO – реальные факты и передовая практика?

С тех пор я использовал более старый mysql вместо PDO и я видел много рекомендаций, почему нужно переключиться на PDO , однако также много разных фактов (также здесь, на SO), например:

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

Итак, что на самом деле верно? В частности, каковы наилучшие методы при использовании PDO а также как скорость, так и безопасность – как лучше всего защитить себя от SQL-инъекций, но при этом иметь быстрые запросы?

Related of "PDO – реальные факты и передовая практика?"

Поддержка базы данных

Основное преимущество PDO над MySQL заключается в поддержке драйверов базы данных. PDO поддерживает множество различных драйверов, таких как CUBRID, MS SQL Server, Firebird / Interbase, IBM, MySQL и т. Д.

Безопасность

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

 // PDO, prepared statement $pdo->prepare('SELECT * FROM users WHERE username = :username'); $pdo->execute(array(':username' => $_GET['username'])); // mysqli, prepared statements $query = $mysqli->prepare('SELECT * FROM users WHERE username = ?'); $query->bind_param('s', $_GET['username']); $query->execute(); 

скорость

Хотя PDO и MySQL довольно быстры, MySQL работает незначительно быстрее в тестах – ~ 2,5% для незаготовленных операторов и ~ 6,5% для готовых.

Именованные параметры

Как и @DaveRandom, это еще одна особенность PDO, и это значительно проще, чем ужасное числовое связывание.

 $params = array(':username' => 'test', ':email' => $mail, ':last_login' => time() - 3600); $pdo->prepare(' SELECT * FROM users WHERE username = :username AND email = :email AND last_login > :last_login'); $pdo->execute($params); 

PDO против MySQL

Несколько ссылок для дальнейших ссылок
MySQL против PDO (Stackoverflow)
Почему вы должны использовать PDO для доступа к базе данных (net.tutsplus.com)

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

Я рекомендую использовать PDO и использовать его с подготовленными запросами. Если вы не являетесь Twitter или Google, маловероятно, что вы будете даже малейшим, узнав о различиях в производительности.