mysql在第一个值之前拒绝带有转义斜杠的插入

时间:2011-10-26 00:21:50

标签: php mysql escaping

我正在尝试运行此查询,但无法弄清楚为什么MySQL不喜欢第一个使其报价转义的值。 我正在逃避我的字符串:

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

所以现在$ query是:

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

然而,这不起作用。我在值列表中的第一个转义斜杠上出现语法错误。

由于

2 个答案:

答案 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');";