С тех пор я использовал более старый mysql
вместо PDO
и я видел много рекомендаций, почему нужно переключиться на PDO
, однако также много разных фактов (также здесь, на SO), например:
PDO
немного быстрее / немного медленнее PDO
помогает предотвратить SQL-инъекции, но только если вы используете подготовленные запросы Итак, что на самом деле верно? В частности, каковы наилучшие методы при использовании PDO
а также как скорость, так и безопасность – как лучше всего защитить себя от SQL-инъекций, но при этом иметь быстрые запросы?
Основное преимущество 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);
Несколько ссылок для дальнейших ссылок
MySQL против PDO (Stackoverflow)
Почему вы должны использовать PDO для доступа к базе данных (net.tutsplus.com)
В большинстве случаев скорость разработки (как долго это требуется для написания программного обеспечения) гораздо важнее, чем незначительные улучшения производительности.
Я рекомендую использовать PDO и использовать его с подготовленными запросами. Если вы не являетесь Twitter или Google, маловероятно, что вы будете даже малейшим, узнав о различиях в производительности.