Я использую следующий код для поиска, если элемент уже находится в моей базе данных:
$query = $pdo->prepare("select * from mydatabase where title = :title");
$query->execute(['title' => $myvariable]);
$results = $query->fetchAll(PDO::FETCH_ASSOC);
Этот код работает за исключением случаев, когда $ myvariable содержит одинарную кавычку. Я думал, что одинарные кавычки были автоматически проанализированы с переменными, но, видимо, это не так, или я что-то упустил?
Примеры для $myvariable
:
Отряд самоубийц => работает
Гарри Поттер и Философский камень => не работает
Я получаю следующее сообщение об ошибке:
Неустранимая ошибка: Uncaught PDOException: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL имеется ошибка; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с ‘s Stone
Фильма нет в базе данных, а исходная строка из файла json. Я проверил интервал (отделка) и там нет места.
Спасибо
Для побега нужно использовать bindParam
http://php.net/manual/en/pdostatement.bindparam.php
$query = $pdo->prepare("select * from mydatabase where title = :title");
$query->bindParam(':title', $myvariable, PDO::PARAM_STR);
$query->execute();
$results = $query->fetchAll(PDO::FETCH_ASSOC);
Других решений пока нет …