转义字符串上的MySQL语法错误

时间:2012-01-23 04:54:37

标签: php mysql mysql-real-escape-string

MySQL在转义字符串上提供1064。

$date is set above.
$article_clean = mysqli_real_escape_string($dbc,$article);
$guid_clean= mysqli_real_escape_string($dbc,$guid_clean);
$pub_date_clean = mysqli_real_escape_string($dbc,$pub_date);
$title_clean = mysqli_real_escape_string($dbc,$title);
$query = "INSERT INTO blog_post (date,article,link,pub_date,title) VALUES ('$date',$article_clean','$guid_clean','$pub_date_clean','$title_clean')";

mysqli_query($dbc, $query);

为什么?

3 个答案:

答案 0 :(得分:1)

$query = "INSERT INTO blog_post (blah blah) VALUES ('$date',$article_clean', ...)";
                                                            ^

这个论点你没有开场白。你需要添加一个。

最重要的是,这句话看起来很可疑:

$guid_clean = mysqli_real_escape_string ($dbc, $guid_clean);

所有其他人都采用“不干净”的版本来制作干净的版本。除非你已经以某种方式设置了guid_clean,否则可能应该是:

$guid_clean = mysqli_real_escape_string ($dbc, $guid);

正如我所说,那不是必然的情况,但我会检查它以确保。

答案 1 :(得分:1)

您错过了一个引号,用这个重写您的查询行: -

$query = "INSERT INTO blog_post (date,article,link,pub_date,title) VALUES ('$date','$article_clean','$guid_clean','$pub_date_clean','$title_clean')";

答案 2 :(得分:0)

尝试使用更好的PHP IDE轻松解决这些问题。