我目前正在开发一个博客系统。在大多数情况下,我已经完成了博客,只是创建脚本,允许用户在每个博客上发表评论。我的PHP选择代码在以下几个方面得到一个错误
检查与您的MySQL服务器版本对应的手册,以获得在第1行的“blogID =6”附近使用的正确语法。
我的SQL语句的完整代码是:
SELECT commentID, blogID FROM blog_comments
ORDER BY commentID LIMIT 1 DESC WHERE blogID = '.$row['postID'];`我知道当前的语句容易受到SQL注入的影响,并且尝试使用令牌来确保我不受这种影响。
$row['postiD']来自上一条用于显示实际博客文章的SQL语句。这是为了在主页上显示,我不需要显示实际的评论文本,而只需要显示特定博客上的评论数量。如果需要的话,我可以贴出完整的代码。
好的,我更新了我的SQL语句并修复了这个问题。但是,页面没有显示commentID编号,$e也没有被执行,我的apache2日志中也没有任何错误。
$query = "SELECT commentID, blogID FROM blog_comments WHERE blogID ':postid' ORDER BY commentID DESC LIMIT 1";
$query_params = array(':postid' => $row['postID']);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch(PDOException $e)
{
// dont echo $e on production site
die($e->getMessage());
}
$rows = $stmt->fetchAll();
?>
<?php foreach($rows as $row): ?>
<?php echo $row['commentID']; ?>
<?php endforeach; ?>
comments发布于 2015-07-21 05:25:02
在select之后移动WHERE大小写:
'SELECT commentID, blogID FROM blog_comments
WHERE blogID = '.$row['postID'].' ORDER BY commentID DESC LIMIT 1'为了防止SQL注入,使用PDO和准备语句:(http://php.net/manual/en/pdo.prepared-statements.php)。
发布于 2015-07-21 05:25:18
您确实需要学习如何在SQL中创建select ,order, where and limit语句。
您的查询将是
"SELECT `commentID`, `blogID` FROM `blog_comments` WHERE `blogID` = '".$row['postID']."' ORDER BY `commentID` DESC LIMIT 1" ;读取教程
还读了如何防止SQL注入?
发布于 2015-07-21 05:25:49
您写错了查询
'SELECT commentID, blogID FROM blog_comments WHERE blogID = '.$row['postID'].' ORDER BY commentID DESC LIMIT 1';https://stackoverflow.com/questions/31530945
复制相似问题