Подтвердить что ты не робот

Реальная escape-строка и PDO

Я использую PDO после миграции из библиотеки mysql. Что я использую вместо старой функции real_escape_string?

Мне нужно экранировать одинарные кавычки, чтобы они попадали в мою базу данных, и я думаю, что есть лучший способ справиться с этим без добавления косой черты ко всем моим строкам. Что я должен использовать?

4b9b3361

Ответ 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. См. этот учебник.