-1

変数をエコーする$userzと、Web ページに適切なユーザー名が書き込まれますが、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

値をアポストロフィで囲んでいません:

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 に答える