0

我收到与此类似的查询错误,但我还没有发现问题:

$str = "rob's";
...
$query ="INSERT INTO tableName (name) VALUES (mysql_real_escape_string('$str')";

编辑:

我道歉。我在减少代码时犯了一个错误;这更接近我所拥有的错误:

$str = "rob's";
...
$query ="INSERT INTO tableName (name) VALUES (('".mysql_real_escape_string($str)."')";
4

4 回答 4

4

mysql_real_escape_string()是 PHP,不是 MySQL。你需要把它从引号中取出

$query ="INSERT INTO tableName (name) VALUES ('".mysql_real_escape_string($str)."')";

另外,$str 是一个字符串,所以在 MySQL 中它也需要被 qoutes 包围,我添加了它们。你已经有了这个,但是因为函数需要脱离引号,所以必须移动它们

于 2012-04-17T20:03:42.627 回答
1
$query ="INSERT INTO tableName (name) VALUES ('" . mysql_real_escape_string($str) . "'";
于 2012-04-17T20:04:09.913 回答
1

mysql_real_escape_string() is a PHP function. So in your MySQL query string you have to pass it like a variable:

$query ="INSERT INTO tableName (name) VALUES ('" . mysql_real_escape_string($str) . "')";

Read more here: http://php.net/manual/en/function.mysql-real-escape-string.php

于 2012-04-17T20:05:13.270 回答
0

我建议在插入查询之前执行 mysql_real_escape_string() 函数。在查询调用期间尝试去除字符存在已知问题。下面的代码我以前使用过很多次并且知道它有效。如果您向我们提供您遇到的错误,您是否使用 mysql*i* 之类的 mysql 扩展以及您正在使用的真实代码,这也会有所帮助。“我在减少代码时犯了一个错误;这更接近于我给出的错误”并不能真正帮助缩小您遇到的问题,因为您可能会在减少您的代码的同时删除引发错误的部分代码。不过,使用我在下面的内容应该对你有用。

$str = $_POST['name'];
mysql_real_escape_string($str);
$query = "INSERT INTO tableName (name) VALUES (".$str.")";
mysql_query($query);
于 2013-12-30T12:36:04.070 回答