2015-07-21 169 views
2

我目前正在开发博客系统。大多数情况下,我已经完成了博客,只是创建脚本以允许用户向每个博客发布评论。我的PHP代码选择沿PHP,MYSQL创建博客评论系统

检查的行收到错误对应于你的MySQL服务器版本使用附近的“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

'SELECT commentID,blogID FROM blog_comments ORDER BY commentID LIMIT 1 DESC WHERE blogID =' $行[ '帖子ID']; ..查询错过报价纠正,错误再次检查:。” $行[ '帖子ID']“。 – tharif

+0

您的订单似乎已关闭,您尝试了''SELECT commentID,blogID FROM blog_comments WHERE blogID ='。$ row ['postID']。' ORDER BY commentID DESC LIMIT 1'; ' – m1xolyd1an

+0

SO针对每个帖子的1个问题开展工作。如果你有新的问题,请创建一个新的帖子,引用这个帖子。 – Strawberry

回答

1

你真的需要学习如何创建select ,order, where and limit语句在SQL

您所查询的是

"SELECT `commentID`, `blogID` FROM `blog_comments` WHERE `blogID` = '".$row['postID']."' ORDER BY `commentID` DESC LIMIT 1" ; 

Tutorial

又读How can I prevent SQL-injection

1

你写错了查询

'SELECT commentID, blogID FROM blog_comments WHERE blogID = '.$row['postID'].' ORDER BY commentID DESC LIMIT 1'; 
0

您所查询的元素序列似乎是错误的,请按照下面的查询序列:

'SELECT commentID, blogID FROM blog_comments WHERE blogID = '.$row['postID'].' ORDER BY commentID DESC LIMIT 1'; 

要求后设置ORDER BY & LIMIT WHERE子句

-1
SELECT `commentID`, `blogID` FROM `blog_comments` WHERE blogID = $row['postID'] order by `commentID` DESC limit 1