Реальная escape-строка и PDO
Я использую PDO после миграции из библиотеки mysql
. Что я использую вместо старой функции real_escape_string
?
Мне нужно экранировать одинарные кавычки, чтобы они попадали в мою базу данных, и я думаю, что есть лучший способ справиться с этим без добавления косой черты ко всем моим строкам. Что я должен использовать?
Ответы
Ответ 1
Вы должны использовать PDO Prepare
Из ссылки:
Вызов PDO:: prepare() и PDOStatement:: execute() для операторов, которые будут выдаваться несколько раз с разными значениями параметров, оптимизирует производительность вашего приложения, позволяя водителю согласовывать кеширование клиента и/или сервера план запроса и метаинформацию, а помогает предотвратить атаки SQL-инъекций, устраняя необходимость вручную указывать параметры.
Ответ 2
PDO предлагает альтернативу, предназначенную для замены mysql_escape_string () методом PDO :: quote().
Вот выдержка из сайта PHP:
<?php
$conn = new PDO('sqlite:/home/lynn/music.sql3');
/* Simple string */
$string = 'Nice';
print "Unquoted string: $string\n";
print "Quoted string: " . $conn->quote($string) . "\n";
?>
Код выше выведет:
Unquoted string: Nice
Quoted string: 'Nice'
Ответ 3
Используйте подготовленные операторы. Они сохраняют данные и синтаксис отдельно, что устраняет необходимость экранирования данных MySQL. См. этот учебник.