我遇到了mysqli_real_escape_string和单引号的问题。
任何时候插入都会包含一个值,其中包含'mysqli_real_escape_string将其替换为\',导致插入失败。
我没有启用魔术引号,这似乎是这个问题的常见原因,但仍然发现我得到了''而不是'或甚至是\\'
有谁能告诉我这里可能出了什么问题?
答案 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 ('\'' ...
第一个是“坏”。因为额外的报价。第二个是有效的。