2017-06-09 5 views
0

Ich habe eine Mysql-Datenbank namens Benutzer. Hier ist ein Bild: enter image description hereSQL-Syntax, die mir einen Fehler

Ich möchte den Benutzernamen des Benutzers "dodlo.rg" programmgesteuert ändern.

Eigentlich habe ich die PHP-Version 7.1. Und das ist ein Teil meiner PHPCode:

EDITED Code:

$newName= $_POST["changeT"]; 
$userId = $_POST["userId"]; 

     $db = mysqli_connect("trolö", "trolö", "trolö123", "trolö") 
     $sql = "UPDATE user SET username = '$newName' WHERE user_id = '$userId'"; 
     $query = mysqli_query($db, $sql); 
     $response["successU"] = true; 

aber ich habe den Fehler: „Du hast einen Fehler in der SQL-Syntax, das Handbuch, das zu Ihrem MariaDB Server entspricht Version für die richtige Syntax in der Nähe von "SELECT * FROM Benutzer 'in Zeile 1"

Vielen Dank im Voraus.

+1

Sie brauchen diesen 'SELECT * FROM Benutzer' nicht – hungrykoala

+0

Machen Sie es sich zur Gewohnheit, 'user_id' als Referenz für die Aktualisierung anstelle des Benutzernamens zu verwenden. in einem Fall von Duplikaten. – hungrykoala

+0

@hungrykoala Sollte ich es mit der user_id tun, auch wenn jeder Benutzername nur von einer Person genommen werden kann? – user7938448

Antwort

1

Das Problem liegt zu konvertieren. Erstens, da diese Spalte ein varchar-Feld ist, muss es in Anführungszeichen stehen, sonst erzeugt es einen SQL-Fehler. Zweitens die SELECT-Anweisung direkt danach ist nicht gültig, aber ich vermute, es war ein Kopieren/Einfügen-Fehler.

Daher Ihre Arbeits Code sollte sein:

$newName= $_POST["changeT"]; 

    $db = mysqli_connect("trolö", "trolö", "trolö123", "trolö") 
    $sql = "UPDATE user SET username = '".addslashes($newName)."' WHERE username = 'dodlo.rg'"; 
    $query = mysqli_query($db, $sql); 
    $response["successU"] = true; 

Auch betrachten Sie bitte Ihre Primärschlüssel auf dem Statement eher ein varchar Feld verwendet wird, wie es Geschwindigkeit, wenn komplexere Abfragen verbessern werden. (zB where user_id = 35 instead of where username = 'dodlo.rg').

Schließlich, aber ziemlich wichtig, könnte dieser Code anfällig für SQL-Injektionen sein. Sie müssen vorbereitete Anweisungen verwenden.

1

Sie haben diese Abfrage in zwei Teile in 2 Teilen

$sql1 = "UPDATE user SET username = $newName WHERE username = 'dodlo.rg'"; 
$sql2 = "SELECT * FROM user"; 
Verwandte Themen