Codeigniter -, Datenbank erhöhen Wert durch den enthaltenen Wert in der variable
Ich bin mit codeigniter, und ich habe die folgende Funktion in meinem Modell zu geben, Punkte für den Benutzer.
Es ist jedoch nicht die Arbeit, sondern die Einstellung der Punkte-Spalte auf 0.
Dies ist, wie es geschrieben steht im codeigniter-Handbuch. Also ich habe keine Ahnung, warum es nicht funktioniert...
Dank
function give_points($username,$points)
{
$this->db->set('points', 'points + $points');
$this->db->where('username', $username);
$this->db->update('users');
echo"done";
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie haben zu sagen, CI speziell zum nicht die Flucht der text. Ich habe kein CI installation praktisch um dies zu testen, aber ich glaube, es war so etwas wie:
Nicht sicher, ob dies die Ursache des Problems ist, aber Sie verwenden Sie einfache Anführungszeichen, auf der folgende Zeilen :
Mit dabei, die
$points
string injiziert werden, wie Sie ist, buchstäblich, in Ihre SQL-Abfrage -- es ist nicht das Wert, die gehen, um verwendet werden.Wenn Sie möchten
$points
interpoliert werden (also Ihr Wert an Ihre Stelle setzen, in string), müssen Sie doppelte Anführungszeichen verwenden :Für weitere Informationen über die Variablen-interpolation, siehe die Variablen-parsing Abschnitt im PHP-Handbuch.
users
SETpoints
= 'Punkte + 1000', WOusername
= 'thomas' das funktioniert nicht.. weitere Ideen?points
Feld in der Datenbank ist eine ganze Zahl, und Sie versuchen, Zugriff auf es sich wie ein string : deine Abfrage Aussehen sollteUPDATE users SET points = 'points + 1000' WHERE username = 'thomas'
;;; haben Sie Vielleicht die Möglichkeit haben, darauf hinweist, dass CI ? Ich weiß nicht, CI gut genug, um mehr zu helfen, sorry.Wenn es eine chance gibt, immer um die erstellte SQL-Abfrage - ich weiß nicht, wie es mit CI.
Jedoch Ihre
set()
sieht fehlerhaft.Zuvor
$points
war Teil der string, und nicht erweitert werden, um den Inhalt der$points
, durch die Sie mit einem einzelnen Anführungszeichen statt der doppelten Anführungszeichen - siehe Handbuch über strings in PHP.Einen leicht besseren code ist der eine oben, als es Niederlagen möglich SQL-injection, je nachdem, wo
$points
kommt ursprünglich aus.users
SETpoints
= 'Punkte + 1000', WOusername
= 'thomas' Diese Abfrage funktioniert nicht... Dankeset()
in Anführungszeichen gesetzt, so kann das nicht funktionieren auf diese Weise.