我正在尝试运行此查询,但无法弄清楚为什么MySQL不喜欢第一个使其报价转义的值。 我正在逃避我的字符串:
$query = mysql_real_escape_string("INSERT INTO `Promotion` (`TransactionID`) VALUES ('$transaction_id');");
所以现在$ query是:
INSERT INTO `Promotion` (`TransactionID`) VALUES (\'20111025201459\');
然而,这不起作用。我在值列表中的第一个转义斜杠上出现语法错误。
由于
答案 0 :(得分:1)
我解决了问题,但仍然不确定它发生的确切原因。
我在mysql_real_escape_string()的参数中制定了查询字符串。
将查询字符串分配给变量,然后转义为有效。
答案 1 :(得分:0)
转义的目的是防止数据干扰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');";