PHP-Variablen Problem in MySql

Als allererstes: Ja ich weiß ich sollte iMysql benutzen.

So nun zu meinem Problem, ich hab hier ein Skript welches dich automatisch in einen von 9 Teamplätzen einsortieren soll, natürlich nicht in welche die schon vergegeben sind. Das Problem ist, das Skript wird ausgeführt und alle MySql Sachen klappen, außer eine. Es hängt definitiv mit der Variable $i_member=$Name zusammen, weil wenn ich manuell Member2 eintrage, klappt es. Hat da irgendjemand eine Idee wie ich das mach?
Das hier ist mein Code. Bei $i_member kommt definitiv (überprüft) ‚Member2‘ raus.
[PHP]
$aendern2 = „UPDATE Squads SET ‚$i_member‘=‚$Name‘ WHERE Name=‚$Squad‘“;
$aendern_query2 = mysql_query($aendern2);[/PHP]

Hier ist meine Datenbank:
http://puu.sh/5qejG.png

Mfg!

Ich würde in PHP die Zeile eher so schreiben:

[php]$aendern2 = „UPDATE Squads SET '“.$i_member.„‚=‘“.$Name.„’ WHERE Name='“.$Squad.„'“;[/php]

Außerdem solltest Du mit mysql_error() prüfen, ob es einen SQL-Fehler gibt. Wenn ja, dann schau dir genau das erzeugte SQL-Statement an, z.B. per

[php]echo $aendern2;[/php]

Danke erstmal für die Antwort, aber es wirft keinen Mysql Fehler aus und bei deinen Änderungen passiert auch nix ._.

Hallo,

in der DB sehe ich keine Spalte „Name“?
$aendern2 wird aber auch als sql ausgeführt?

Cheffchen

http://puu.sh/5qitF.png
Ich denke schon, wie kann man das überprüfen?

Hallo,

gibts das den Datensatz denn der bei „Name“ gesucht wird?
sql in de art vorhanden if (!$mysqli->query($aendern2)) {printf("DB Fehler: %s\n", $mysqli->error);}

ohne mehr infos kann man nicht helfen.

Cheffchen

Ja den Datensatz gibt es, zum wiederholten mal, wenn ich statt $i_member Member2 hinschreibe klappt es ja, ich will nur wissen wie ich das mit der Variable richtig mache.

Wie sieht das Statement denn aus, wenn Du es mit echo ausgibst?

Btw.: besteht überhaupt die Datenbankverbindung? :smiley:

Hört Ihr mir überhaupt zu? Sobald ich [PHP]‚$i_member‘[/PHP] durch [PHP]Member2[/PHP] ersetze klappt es ja, und alle anderen MySql Sachen davor im Code gehen ja auch, das heißt es ist 100% ein Problem wie ich die Variable im MySql angebe und dafür brauch ich ja grad Hilfe :confused:

Dennoch würde ich gerne das per PHP zusammengestellte Statement mal sehen.

Ich habs Problem gelöst… hat vorher nicht funktioniert jetzt aber plötzlich lol.
[PHP]$i_member=‚$Name‘[/PHP]
Also einfach ohne die Striche… naja trotzdem Danke für die Hilfe hier!

Die Lösung ist aus deiner Sicht also Quellcode den Du uns nicht gezeigt hast? Zudem verstehe ich deine Lösung nicht. Natürlich ist es besser so eine Wertzuweisung ohne Anführungszeichen zu schreiben. Aber es sollte auch nicht so ein Problem verursachen. Da Du uns das erzeugten SQL-Statement weiter vorenthalten hast, ist es aber weiterhin schwierig den richtigen Grund zu finden.

Nein, das Problem war das es nicht in die Datenbank eingetragen wurde, weil es versucht hat den Wert ‚Member2‘ zuzuweisen, und nicht Member2.
Außerdem habe ich den Quellcode gezeigt, das hier war mein Ausgangsquellcode:

[PHP]$aendern2 = „UPDATE Squads SET ‚$i_member‘=‚$Name‘ WHERE Name=‚$Squad‘“;
[/PHP]

und so funktioniert es:
[PHP]$aendern2 = „UPDATE Squads SET $i_member=‚$Name‘ WHERE Name=‚$Squad‘“;
[/PHP]

Ach jetzt verstehe ich. Logisch. Ich würde dennoch als Optimierung noch folgendes vorschlagen:
[php]$aendern2 = „UPDATE Squads SET „.$i_member.“ ='“.mysql_real_escape_string($Name).„’ WHERE Name='“.mysql_real_escape_string($Squad).„'“;[/php]

Es funktioniert, ist aber trotzdem falsch!!!
Korrekt schreibt man das:
[PHP]$aendern2 = „UPDATE Squads SET $i_member =‚$Name‘ WHERE Name=‚$Squad‘“;[/PHP]
Tabellen- und Spaltemnamen gehören zwischen Backticks

Ok, mit bdt600’s Hinweis würde das optimal so aussehen:

[php]
$aendern2 = „UPDATE Squads SET ".$i_member." ='“.mysql_real_escape_string($Name).„’ WHERE Name='“.mysql_real_escape_string($Squad).„'“;[/php]

Fast, da fehlen immer noch Backticks :wink: