繁体   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