Я использую PDO после миграции из библиотеки mysql. Что я использую вместо старой функции real_escape_string
?
Мне нужно избежать одиночных кавычек, чтобы они вошли в мою базу данных, и я думаю, что может быть лучший способ справиться с этим без добавления (ing) косых черт ко всем моим строкам. Может ли кто-нибудь сказать мне, что я должен использовать?
Вы должны использовать PDO Prepare
Из ссылки:
Вызов PDO :: prepare () и PDOStatement :: execute () для операторов, которые будут выдаваться несколько раз с разными значениями параметров, оптимизирует производительность вашего приложения, позволяя водителю согласовывать кеширование клиентов и / или серверов в плане запроса и метаинформации и помогает предотвратить атаки SQL-инъекций, устраняя необходимость вручную указывать параметры .
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'
Используйте подготовленные заявления. Они сохраняют данные и синтаксис отдельно, что устраняет необходимость экранирования данных MySQL. См., Например, этот учебник .