php
  • mysql
  • wamp
  • 2013-04-22 95 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}'"); 
    
    相關問題