ЗОП Не экранирование кавычек - PullRequest
4 голосов
/ 13 марта 2012

У меня проблема в php-скрипте, когда я использую PDO для доступа к моей базе данных.Кажется, я не могу заставить PDO избежать моей строки, когда я использую prepare() или execute() в PDO.Я просмотрел все и не нашел ответа на эту проблему, потому что везде, где я смотрю, написано, что PDO автоматически экранирует строки.Вот мой код:

$statement = $db->prepare("INSERT INTO Table (ID, Column1, Column2) VALUES (NULL, '$var1', '$var2')");
$query->execute();

Допустим, $var1 = "abc'def" и $var2 = "123" Проблема в том, что я получаю сообщение об ошибке, потому что кавычка не была экранирована.

Ошибка: SQLSTATE[42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL имеется ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'def', '123') 'в строке 1

Я также пытался использовать метод query(), нота же prpblem с цитатами.Я действительно не понимаю, и это расстраивает.Спасибо за любую помощь.

Ответы [ 3 ]

13 голосов
/ 13 марта 2012

Попробуйте это:

# Took out ID, as it should be auto_increment and handled by database
$statement = $db->prepare("INSERT INTO Table (Column1, Column2) VALUES (:col1, :col2)");

$statement->bindValue(':col1', $var1, PDO::PARAM_STR);
$statement->bindValue(':col2', $var2, PDO::PARAM_INT);

$statement->execute();
2 голосов
/ 13 марта 2012

Пожалуйста, посмотрите на метод bindParam () библиотеки PDO.

Это делает ваш запрос похожим на:

$statement = $db->prepare("INSERT INTO Table (ID, Column1, Column2) VALUES (NULL, ?, ?)");
$statement->bindParam(1, $var1, PDO::PARAM_STR);
$statement->bindParam(2, $var2, PDO::PARAM_INT);

$query->execute();

// Я действительно должен загрузить новые ответы :) Когда строка говорит, что есть.

0 голосов
/ 13 марта 2012

Для этой цели есть функция. Взгляните на www.php.net/addslashes

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