我正在爲班級製作一款遊戲,並且我決定添加一個評論系統,以便報告評論。我創建了一個名爲comments
的表格和名爲report_active
的表格中的一列。當用戶報告評論時,該列中的值變爲1.然後在adminCP中列出在active_report
列中具有1的所有評論。如何檢查ID是否不存在..?
有一個名爲comments.php
的文件,其中列出了所有註釋並允許用戶添加新註釋。在每條評論旁邊,我添加了一個鏈接到名爲report_comment.php
的文件的報告按鈕。我用這個文件來運行更新查詢。
這個文件看起來是這樣的:
<?php
session_start();
require_once('db_connect.php');
require_once('security.php');
if (isset($_GET['id'])) {
$report_active = 1;
$id = $_GET['id'];
$update = $db->prepare("UPDATE comments set report_active = ? WHERE id = ?");
$update->bind_param('ii', $report_active, $id);
if ($update->execute()) {
$_SESSION['reported'] = 'reported';
header('Location: comments.php');
die();
}
} else {
header('Location: comments.php');
}
?>
會話變量$_SESSION['reported']
是我用來determin是否顯示警報它說評論報道,那麼我取消設置會話的用戶。
我所問的是我怎麼能檢查是否一個ID發來的$_GET
要求確實存在,如果它不然後運行通常$_SESSION['reported']
,如果沒有再設置一個新的會話$_SESSION['errorReport']
然後顯示與錯誤警報?
我曾嘗試:
if ($update->execute() && $update->num_rows) {
然而這沒有奏效。
有沒有另外一種方法可以做到這一點?
我很抱歉沒有在高級中回答你的問題,但你真的應該重新考慮你的數據庫的架構。使用標誌來表示關係是一種不好的做法。您應該使用連接來連接兩個表,並檢查是否有任何匹配的行可以指示報表是否處於活動狀態。請查找連接,外鍵和SQL關係。 – PressingOnAlways
我剛剛訪問過:http://www.w3schools.com/sql/sql_foreignkey.asp。我同意這是一個更好的方法。我這樣做的原因是因爲它只是一個小小的任務,我不覺得有必要創建多個表,而不會被大量使用。儘管我會將它作爲一個更大的公共應用程序的選項來寫。 – user3481788