我有一个脚本,当用户按某些条款点击“拒绝”按钮时会运行该脚本。 当它运行时,它应该撤销对特定区域的访问权限,由于某种原因,脚本不起作用 - 因为它不会更新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());
答案 0 :(得分:2)
更新答案以完成调试程序。
如果没有错误,那么数据库条目没有发生的原因有三种:
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
。如果您不想迁移到对象模块,可以使用{{1}}的过程函数。
答案 1 :(得分:0)
您需要确保在脚本顶部调用session_start();
。没有它,您的$username
变量将永远不会被设置。
答案 2 :(得分:0)
确保 $ username 包含您传递的会话值。
echo "$username";
只有在您更正时才进行查询。
另外,请确保表的字段名称正确无误。我注意到 SeceretArea ,表格中可能是 SecretArea 。
答案 3 :(得分:0)
只是一些想法:
UserName
的确切值?