当我回显变量$userz
时,它会在网页中写出好的用户名,当我在mysql查询中使用它时,它不起作用。为什么呢?
echo $userz; // write "Programmeur" on the web page
$bdd->exec('UPDATE user SET status = \'registered\' WHERE username =' .$userz);// not working
$bdd->exec('UPDATE users SET status = \'registered\' WHERE username = $userz');// not working
$bdd->exec('UPDATE users SET status = \'registered\' WHERE username = \'Programmeur\'');//work
是因为我正在使用wamp
还是我只是遗漏了什么?
答案 0 :(得分:3)
由于您的username
可能是varchar
,因此您不会在查询中引用它。
$bdd->exec('UPDATE user SET status = \'registered\' WHERE username = "' .$userz . '"');// working
诊断查询无效的最佳方法是打印MySQL
错误(代码和消息),不要猜错是什么。我认为你的MySQL
包装器可以做到这一点。我可以确定我是否确切知道你在这里使用的是什么($bdd
是什么样的实例)。
答案 1 :(得分:0)
在PHP中,不会解析单引号内的内容。
您可以使用:
$bdd->exec("UPDATE users SET status = 'registered' WHERE username = '$userz'");
请考虑SQL注入的风险。如有必要,请使用准备好的声明。
另外,您的数据库表名是什么? user
或users
?
答案 2 :(得分:0)
您没有将值包装在撇号中:
username = \'' . $userz . '\''
或者更容易
$bdd->exec("UPDATE user SET status = 'registered' WHERE username = '$userz'");
您应该做的是使用PDO或mysqli正确参数化查询。然后,引号将自动添加和参数将被正确转义。
答案 3 :(得分:0)
$bdd->exec ( 'UPDATE user SET status = "registered" WHERE username = "'.$userz.'"' );
或
$bdd->exec ( "UPDATE user SET status = 'registered' WHERE username = '{$userz}'" );