mysqli_real_escape_string的问题(和魔术引号关闭)

时间:2011-04-12 17:24:28

标签: mysqli

我遇到了mysqli_real_escape_string和单引号的问题。

任何时候插入都会包含一个值,其中包含'mysqli_real_escape_string将其替换为\',导致插入失败。

我没有启用魔术引号,这似乎是这个问题的常见原因,但仍然发现我得到了''而不是'或甚至是\\'

有谁能告诉我这里可能出了什么问题?

1 个答案:

答案 0 :(得分:2)

这是一个答案,因为评论有点限制。

所以你要生成像

这样的查询
$a = mysqli_real_escape_string(... something ...);
$b = mysqli_real_escape_string(... something else ...);

$sql = "INSERT ... VALUES ('$a', '$b')";


确定。所以我们这样说:

$a = "'"; // a is now a single quote: '
$escaped_a = mysql_real_escape_string($a); // should be \' now

$sql1 = "INSERT ... VALUES ('$a' ..."
$sql2 = "INSERT ... VALUES ('$escaped_a' ..."

你最终应该

INSERT ... vALUES (''' ...
INSERT ... VALUES ('\'' ...

第一个是“坏”。因为额外的报价。第二个是有效的。