2015-07-21 115 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