PHP变量在mySQL查询中不起作用,我不知道为什么

时间:2013-04-22 04:13:22

标签: php mysql wamp

当我回显变量$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还是我只是遗漏了什么?

4 个答案:

答案 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注入的风险。如有必要,请使用准备好的声明。

另外,您的数据库表名是什么? userusers

答案 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}'" );