9-1
完成點閱數功能
- 按照慣例問AI
請用PHP8產生名為 add_views($id)的函數,用來增加觀看數
可以根據id更新school_news資料表(MyISAM 引擎)的某一筆views資料,將其值+1
PDO物件已建立,global引入使用即可
SQL用 ? 佔位符的方式處理
- 根據AI回覆,我們將
add_views()
放至 index.php
的最後面
function add_views(int $id): bool
{
global $pdo;
try {
// 準備 SQL 語句
$sql = "UPDATE school_news SET views = views + 1 WHERE id = ?";
// 準備並執行語句
$stmt = $pdo->prepare($sql);
$result = $stmt->execute([$id]);
// 檢查是否成功更新
if ($result && $stmt->rowCount() > 0) {
return true;
} else {
// 如果沒有更新任何行,可能是因為 ID 不存在
error_log("No rows updated for ID: $id");
return false;
}
} catch (PDOException $e) {
// 記錄錯誤並返回 false
error_log("Error in add_views function: " . $e->getMessage());
return false;
}
}
- 然後調整一下流程,在讀出文章前,就先將點閱數+1
switch ($op) {
...略...
default:
if (!empty($id)) {
add_views($id);
$smarty->assign('news', show($id));
$op = "show";
} else {
...略...
$op = "main";
}
$smarty->assign('aside_news', all(0, 15));
break;
}
- 看看是否有作用: