当我回显变量$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
,还是只是缺少了什么?
因为您的username
可能是varchar
,并且您在查询中没有引用它。
$bdd->exec('UPDATE user SET status = ''registered'' WHERE username = "' .$userz . '"');// working
诊断查询不起作用的最佳方法是打印MySQL
错误(包括代码和消息(,不要猜测出了什么问题。我认为你的MySQL
包装可以做到这一点。如果我知道你在这里使用的是什么($bdd
是的实例(,我可以肯定地告诉你。
在PHP中,不会解析单引号内的内容。
你可以使用这个:
$bdd->exec("UPDATE users SET status = 'registered' WHERE username = '$userz'");
请考虑SQL注入的风险。如有必要,使用事先准备好的声明。
此外,您的数据库表名称是什么?user
还是users
您没有用撇号包装值:
username = ''' . $userz . ''''
或者更容易
$bdd->exec("UPDATE user SET status = 'registered' WHERE username = '$userz'");
真正应该做的是将正确的参数化查询与PDO或mysqli一起使用。然后,将自动为您添加引号,并且参数将正确转义。
$bdd->exec ( 'UPDATE user SET status = "registered" WHERE username = "'.$userz.'"' );
或
$bdd->exec ( "UPDATE user SET status = 'registered' WHERE username = '{$userz}'" );