mysql_query更新

时间:2012-07-23 15:09:16

标签: php mysql session

我有一个脚本,当用户按某些条款点击“拒绝”按钮时会运行该脚本。 当它运行时,它应该撤销对特定区域的访问权限,由于某种原因,脚本不起作用 - 因为它不会更新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());

4 个答案:

答案 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,看看它是否是您想要的价值。

另外,您真的应该考虑切换到PDOmysqli。如果您不想迁移到对象模块,可以使用{{1}}的过程函数。

答案 1 :(得分:0)

您需要确保在脚本顶部调用session_start();。没有它,您的$username变量将永远不会被设置。

答案 2 :(得分:0)

确保 $ username 包含您传递的会话值。

echo "$username";

只有在您更正时才进行查询。

另外,请确保表的字段名称正确无误。我注意到 SeceretArea ,表格中可能是 SecretArea

答案 3 :(得分:0)

只是一些想法:

  • 数据库中是否有一个条目,其中包含UserName的确切值?
  • 您是否在未提交的交易中?
  • 您的SQL语句是否会干扰另一个具有相同名称的表?