PDO извлекает строки с \ " - PullRequest
       1

PDO извлекает строки с \ "

0 голосов
/ 13 февраля 2012

Итак, я хочу получить идентификатор записи, где title = "$ someTitle"

$dbh= new PDO("mysql:host=localhost;dbname=NAME",'USER','PASS', 
  array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
  ));


$someTitle = '\"If you\'re absent during my struggle, don\'t expect to be present during my success.\" - Will Smith';

$statement = $dbh->prepare("select id from posts where title = :title");
$statement->execute(array(':title' => $someTitle));
$row = $statement->fetch();

echo $row[id];

И этот пример не работает, но если я изменю $ someTitle на $ someTitle = 'new test';

все в порядке

Любые советы?

1 Ответ

3 голосов
/ 13 февраля 2012

Не убегай сам.Вот почему есть подготовленные операторы, которые позаботятся о проблемах внедрения SQL-кода.Имея собственные экранированные символы в тексте, вы сообщаете БД, что вы хотите искать текст в БД, которая содержит эти экранированные символы - которых, скорее всего, там нет.*

Обратите внимание, что я только не экранировал символы ".Поскольку вы используете одинарные кавычки для самой строки, любой ' DO должен быть экранирован, чтобы это было допустимым назначением строки PHP.Однако \' не будет виден базой данных, только необработанный '.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...