小编典典

PHP SQL插入错误

sql

插入数据库时​​出现错误。

代码:

dbquery("INSERT INTO site_news_comments (articleid,title,short,comment,timestamp,userid,main,type,topstory) VALUES ($article,'".clean($commentss['title'])."','','".mysql_real_escape_string($_POST['comment'])."',current_timestamp,'".USER_ID."','0','".$commentss['type']."','')");

忽略dbquery,与mysql_query完全一样。

我收到的错误是:

 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''title','short','

不知道为什么会引发此错误!


阅读 151

收藏
2021-04-14

共1个答案

小编典典

教一个人如何钓鱼。

如果查询失败,那么您应该做的第一件事就是回显您要发送的查询:

$sql = "INSERT INTO site_news_comments (articleid,title,short,comment,timestamp,userid,main,type,topstory) VALUES ($article,'".clean($commentss['title'])."','','".mysql_real_escape_string($_POST['comment'])."',current_timestamp,'".USER_ID."','0','".$commentss['type']."','')";

echo $sql;

通常,最终查询到底出了什么问题,这是很明显的。要特别注意查询中的动态内容,通常要注意MySQL抱怨的区域。

如果看起来还可以,那么您会寻找可能需要转义的单词,例如保留的单词

结论

看了代码mysql之后,我不得不得出结论,问题出在哪里$article,它会在您的查询中引起问题。为了以防万一,您可能也应该转义它:)

推荐

您应该了解PDO / mysqli并使用准备好的语句:

// PDO example
$stmt = $db->prepare('INSERT INTO site_news_comments (articleid, title, short, comment, timestamp, userid, main, type, topstory) VALUES (:article, :title, :short, :comment, CURRENT_TIMESTAMP, :user, :main, :type, :topstory)');
$stmt->execute(array(
    ':article' => $article,
    ':title' => $commentss['title'],
    ':short' => '',
    ':comment' => $_POST['comment'],
    ':user' => USER_ID,
    ':main' => 0,
    ':type' => $commentss['type'],
    ':topstory' => '',
));
2021-04-14