簡體   English   中英

mysql_query更新

[英]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來查看它是否是您想要的值。

另外,您確實應該考慮切換到mysqliPDO 如果您不想遷移到對象模塊,則可以使用mysqli的過程函數。

您將要確保調用session_start(); 在腳本的頂部。 沒有它,您的$username變量將永遠不會被設置。

確保$ username帶有您傳遞的會話值。

echo "$username";

僅在正確時才繼續查詢。

並且,請確保表的字段名稱正確。 我注意到SeceretArea可能是您表中的SecretArea

只是一些想法:

  • 數據庫中是否有一個條目,其中包含您要查詢的UserName的確切值?
  • 您是否在未提交的交易中?
  • 您的SQL語句會干擾具有相同名稱的另一個表嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM