2016-07-10 7 views
0

PHPを作成してユーザーの残高を更新していますが、実行時にUPDATEクエリでエラーが発生しているようです。変数を使用したSQL更新クエリ

$student = $database->quote($_POST ["studentID"]); 
    $amount = $database->quote($_POST ["update_balance"]); 

    //sets query to update user balance 
    $query = "UPDATE `User` SET `balance`= (`.$amount.`) WHERE `userID`= (`.$student.`)"; 
    //excecutes the query 
    $database->exec($query); 

'studentID'と 'update_balance'は、HTMLで取り込まれる入力フィールドの名前です。それは任意の文字列エスケープ機構よりもはるかに安全と考えられていてあなたが準備されたステートメントを使用する必要があります

$query = "UPDATE `User` SET `balance`= '$amount' WHERE `userID`= '$student'"; 
+0

変数の前後に '('と ')'を削除してください – yafater

+0

[参考 - PHPでこのシンボルが意味するものは何ですか?](http:// stackover flow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Chay22

+0

@zahrajがあなたの修正を追加しました。ありがとうございました! :) –

答えて

1

削除( `ものと実行SQLクエリは:。。

$statement = $somePdoInstance->prepare("UPDATE user SET balance = :balance WHERE userId = :user_id"); 
$statement->execute(array(
    "balance" => $amount, // the values from POST 
    "user_id" => $student 
)); 

今すぐあなたの更新クエリは動作するはずです

+0

これは、エラーがスローされる問題を修正しますが、バランスを 'NULL'から0に更新しています。型はintで、入力タグは "number"型です。 $ amountを文字列として渡して0に変換する可能性はありますか? –

+0

申し訳ありませんが、私は$ amountの間違ったフィールドを参照していました。私は愚かな質問をする前に、本当に良く調べるべきです。 –

+0

問題が解決したかどうかあなたの質問をエコーし​​てここに貼り付けるならば – yafater