PHP,mysql_real_escape_string和MySQL查询

时间:2012-04-17 20:02:44

标签: php mysql

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

$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 个答案:

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