我收到类似于此问题的查询错误,但我还没有发现问题:
$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)."')";
答案 0 :(得分:4)
mysql_real_escape_string()
是PHP,而不是MySQL。你需要从引号
$query ="INSERT INTO tableName (name) VALUES ('".mysql_real_escape_string($str)."')";
另外,$ str是一个字符串,所以在MySQL中它也需要被qoutes包围,我添加了它们。你已经有了这个,但因为函数需要退出引号,所以必须移动它们
答案 1 :(得分:1)
$query ="INSERT INTO tableName (name) VALUES ('" . mysql_real_escape_string($str) . "'";
答案 2 :(得分:1)
mysql_real_escape_string()
是一个PHP函数。因此,在MySQL查询字符串中,您必须像传递变量一样传递它:
$query ="INSERT INTO tableName (name) VALUES ('" . mysql_real_escape_string($str) . "')";
在此处阅读更多内容:http://php.net/manual/en/function.mysql-real-escape-string.php
答案 3 :(得分:0)
我建议在插入查询之前执行mysql_real_escape_string()函数。尝试在查询调用期间删除字符时存在已知问题。我以前的代码已经使用了很多次,并且知道它有效。如果你给我们提供了你已经得到的错误,你使用mysql扩展名如mysql * i *,以及你正在使用的真实代码,它也会有所帮助。 “我在减少代码的同时犯了一个错误;这更接近于我所提供的错误”并没有真正帮助缩小你所遇到的问题,因为你可能会删除引发错误的部分,同时减少你的错误码。尽管如此,使用我下面的内容应该对你有用。
$str = $_POST['name'];
mysql_real_escape_string($str);
$query = "INSERT INTO tableName (name) VALUES (".$str.")";
mysql_query($query);