PHP,MYSQL创建博客评论系统

Moo*_*aze 2 php mysql

我目前正在开发一个博客系统.在大多数情况下,我已完成博客,只需创建脚本以允许用户将评论发布到每个博客.我的PHP选择代码出现了错误

检查与MySQL服务器版本对应的手册,以便在第1行的"DESC WHERE blogID = 6"附近使用正确的语法.

我的SQL语句的完整代码是:

SELECT commentID, blogID FROM blog_comments   
ORDER BY commentID LIMIT 1 DESC WHERE blogID = '.$row['postID'];`
Run Code Online (Sandbox Code Playgroud)

我知道这个当前语句容易受到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
Run Code Online (Sandbox Code Playgroud)

Man*_*tas 6

WHERE选择后移动案例:

'SELECT commentID, blogID FROM blog_comments 
 WHERE blogID = '.$row['postID'].' ORDER BY commentID DESC LIMIT 1'
Run Code Online (Sandbox Code Playgroud)

为防止SQL注入使用PDO和准备语句:(http://php.net/manual/en/pdo.prepared-statements.php).