[英]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.