php
  • mysql
  • wamp
  • 2013-04-22 122 views -1 likes 
    -1

    当我回显变量$userz时,它在网页中写入了良好的用户名,当我在mysql查询中使用它时,它不起作用。为什么?PHP变量在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

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

    您可以使用此:

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

    请考虑SQL注入的风险。必要时使用准备好的声明。

    此外,你的数据库表名是什么? userusers

    3

    因为您的username可能是varchar而您不在查询中引用它。

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

    最好的方式来诊断为什么您的查询不工作,打印MySQL错误(代码和消息),不用猜什么是错的。我认为你的MySQL包装可以做到这一点。我可以确定,如果我知道你正在使用这里($bdd是什么)。

    +0

    欢迎您。在我的城市下午4:26;) – Nemoden 2013-04-22 05:26:32

    0

    你没有撇号包裹值:

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

    或许更容易

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

    你真正应该做的是使用适当的参数化查询与PDO或mysqli的。然后,报价将自动为您添加参数将被正确转义。

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

    $bdd->exec ("UPDATE user SET status = 'registered' WHERE username = '{$userz}'"); 
    
    相关问题