我有一个脚本,当用户在某些条件下点击“拒绝”按钮时会运行该脚本。 当它运行时,它应该撤销对特定区域的访问权限,由于某种原因,脚本不起作用——因为它不会更新 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
的过程函数。
关于php - mysql_query 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11615303/