在開發網站評論系統時,常見的需求是根據評論 ID 取得單一筆評論內容。原生資料庫類別若未提供對應方法,開發者需自行撰寫查詢邏輯。本文示範如何在 PHP 中以靜態方法實作單條評論查詢,並說明模板端的呼叫方式。
在資料庫操作類別中新增 single() 靜態方法,傳入評論 ID 即可回傳該筆資料陣列:
public static function single($id) {
global $db;
return $db->query("SELECT * FROM `{$db->prefix}comment` WHERE `id` = '{$id}'", 1);
}
參數說明:
$id:欲查詢的評論主鍵 ID$db->prefix:資料表前綴(防止 SQL 注入與多系統共用資料庫)1 代表只取回單筆資料(依底層框架定義而異)控制器取得資料後指派給模板變數,模板即可直接輸出:
{* 控制器 *}
$comment = CommentModel::single($comment_id);
$smarty->assign('comment', $comment);
{* 模板 (Smarty) *}
<div class="comment">
<h4>{$comment.author}</h4>
<p>{$comment.content}</p>
<span class="time">{$comment.create_time}</span>
</div>
在微博網頁版中,每則微博下方的發布時間即為該則微博的永久連結。點擊時間文字,瀏覽器網址列顯示的即為單條微博網址,可直接複製分享。
除自建評論系統外,亦可整合第三方服務(如 Disqus、Gitalk、異見等),或參考口碑網、論壇等現有社群平台的留言機制。自建時需注意 XSS 防護、巢狀回覆、分頁載入等細節。
原文參考:樂道科技 - 取得單條評論方法