我目前正致力于开发博客系统。在大多数情况下,我已完成博客,只需创建脚本以允许用户将评论发布到每个博客。我的PHP选择代码出现了
的错误检查与您的MySQL服务器版本相对应的手册,以便在#DES; DESC WHERE blogID = 6'使用正确的语法。在第1行。
我的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
答案 0 :(得分:6)
在选择:
之后移动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)。
答案 1 :(得分:1)
您真的需要了解我们如何在SQL中创建select ,order, where and limit
语句
您的查询将是
"SELECT `commentID`, `blogID` FROM `blog_comments` WHERE `blogID` = '".$row['postID']."' ORDER BY `commentID` DESC LIMIT 1" ;
阅读Tutorial
答案 2 :(得分:1)
您写错了查询
'SELECT commentID, blogID FROM blog_comments WHERE blogID = '.$row['postID'].' ORDER BY commentID DESC LIMIT 1';
答案 3 :(得分:1)
您的查询元素序列似乎有误,请按照以下查询顺序进行操作:
'SELECT commentID, blogID FROM blog_comments WHERE blogID = '.$row['postID'].' ORDER BY commentID DESC LIMIT 1';
需要设置 ORDER BY&amp;在 WHERE 子句之后限制。
答案 4 :(得分:-1)
SELECT `commentID`, `blogID` FROM `blog_comments` WHERE blogID = $row['postID'] order by `commentID` DESC limit 1