MySQL отклоняет вставку с косой чертой перед первым значением - PullRequest
0 голосов
/ 26 октября 2011

Я пытаюсь выполнить этот запрос, но не могу понять, почему MySQL не нравится первое значение, в котором экранированы его кавычки. Я сбегаю со своей строки:

$query = mysql_real_escape_string("INSERT INTO `Promotion` (`TransactionID`) VALUES ('$transaction_id');");

Так что теперь $ query:

INSERT INTO `Promotion` (`TransactionID`) VALUES (\'20111025201459\');

Это, однако, не будет работать. Я получаю синтаксическую ошибку в первой экранирующей косой черте в списке значений.

Спасибо

Ответы [ 2 ]

1 голос
/ 26 октября 2011

Я исправил проблему, однако до сих пор не уверен в точной причине, по которой это произошло.

Я формулировал строку запроса в аргументе mysql_real_escape_string ().

присвоение строки запроса переменной и последующее экранирование, которое сработало.

0 голосов
/ 26 октября 2011

Смысл экранирования состоит в том, чтобы предотвратить взаимодействие данных с синтаксисом SQL.Следовательно, вы не должны избегать всего запроса;только фактические данные.

Поэтому правильная строка будет выглядеть так:

$query = "INSERT INTO `Promotion` (`TransactionID`) VALUES ('".mysql_real_escape_string($transaction_id)."');";

Если вы предпочитаете, это может быть разделено на две строки:

$escaped_transaction_id=mysql_real_escape_string($transaction_id);
$query = INSERT INTO `Promotion` (`TransactionID`) VALUES ('$escaped_transaction_id');";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...