-1

当我回显该变量$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

4 回答 4

3

因为您username可能是 avarchar并且您没有在查询中引用它。

$bdd->exec('UPDATE user SET status = \'registered\' WHERE username = "' .$userz . '"');// working

诊断查询为什么不工作的最佳方法,打印MySQL错误(代码和消息),不要猜测出了什么问题。我认为你的MySQL包装可以做到这一点。我可以确定我是否知道您在这里使用$bdd的是什么(实例是什么)。

于 2013-04-22T04:15:03.803 回答
0

在 PHP 中,单引号内的内容不会被解析。

你可以使用这个:

$bdd->exec("UPDATE users SET status = 'registered' WHERE username = '$userz'");

请考虑 SQL 注入的风险。如有必要,使用准备好的语句。

另外,你的数据库表名是什么?user还是users

于 2013-04-22T04:14:54.500 回答
0

您没有将值包装在撇号中:

username = \'' . $userz . '\''

或者更容易

$bdd->exec("UPDATE user SET status = 'registered' WHERE username = '$userz'");

您真正应该做的是使用带有 PDO 或 mysqli 的正确参数化查询。然后,将自动为您添加引号,并且参数将被正确转义。

于 2013-04-22T04:16:26.327 回答
0
$bdd->exec ( 'UPDATE user SET status = "registered" WHERE username = "'.$userz.'"' );

或者

$bdd->exec ( "UPDATE user SET status = 'registered' WHERE username = '{$userz}'" );
于 2013-04-22T04:16:35.873 回答