2016-07-10 13 views
0

Ich schreibe PHP, um das Konto eines Benutzers zu aktualisieren, aber meine UPDATE-Abfrage scheint einen Fehler zu werfen, wenn es ausgeführt wird.SQL-Update-Abfrage mit Variablen

$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); 

Die 'studentID' und 'update_balance' sind Namen von Eingabefeldern, die im HTML erfasst werden.

+0

entfernen '(' und ')' vor und nach Variablen – yafater

+0

Mögliche Duplikate von [Referenz - Was bedeutet dieses Symbol in PHP?] (http: // stackover flow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Chay22

+0

@zahraj hat Ihren Fix hinzugefügt, danke für den Vorschlag! :) –

Antwort

1

remove (`Dinge und führen Sie SQL-Abfrage

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

Dies behebt das Problem, dass der Fehler ausgelöst wird, jedoch wird die Balance von "NULL" auf 0 aktualisiert. Der Typ ist ein int und das Eingabe-Tag hat eine Art "Zahl". Könnte es sein, dass der Betrag $ als Zeichenfolge übergeben und in 0 umgewandelt wird? –

+0

Entschuldigung, ich habe das falsche Feld in $ Betrag verwiesen. Sollte wirklich besser prüfen, bevor ich dumme Fragen stelle. –

+0

Ihr Problem gelöst oder nicht? wenn kein Echo Ihre Abfrage und fügen Sie sie hier – yafater

0

Sie vorbereitete Anweisungen verwenden sollte, da es viel sicherer als jede Zeichenfolge zu entkommen Mechanismus betrachtet hat:..

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

Jetzt Abfrage sollte das Update arbeiten