[英]mysql_query update
我有一個腳本,當用戶按某些條件單擊“拒絕”按鈕時,該腳本將運行。 當它運行時,它應該撤消對特定區域的訪問權限,由於某種原因,該腳本無法正常工作-因為該腳本不會更新MYSQL DB,也不會出現死錯誤。
$username = $_SESSION["USER"]["Username"];
mysql_connect("x", "y", "z") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
mysql_query("UPDATE `users` SET `SeceretArea`='Unauth' WHERE `Username`='$username'") or die(mysql_error());
已更新答案,以總結調試過程。
如果沒有錯誤,那么為什么沒有發生數據庫條目有三種可能性:
USERNAME
列等於$database
條目。 $database
。 $database
,但是該值不會被替換到查詢中。 根據我的個人經驗, mysql_query()
不一定在執行查詢之前替換變量值。 首先將查詢字符串創建到變量中,然后將其傳遞給mysql_query()
。 您當前的設置不會將$username
替換為其值。 您可以執行以下操作:
...
$sql = "UPDATE `users` SET `SeceretArea`='Unauth' WHERE `Username`='$username'";
mysql_query($sql) or die(mysql_error());
除此之外,請檢查您的表以確保USERNAME
中存在您想要的值的行。 var_dump()
您的$username
來查看它是否是您想要的值。
另外,您確實應該考慮切換到mysqli
或PDO
。 如果您不想遷移到對象模塊,則可以使用mysqli
的過程函數。
您將要確保調用session_start();
在腳本的頂部。 沒有它,您的$username
變量將永遠不會被設置。
確保$ username帶有您傳遞的會話值。
echo "$username";
僅在正確時才繼續查詢。
並且,請確保表的字段名稱正確。 我注意到SeceretArea可能是您表中的SecretArea 。
只是一些想法:
UserName
的確切值?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.