• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[ERLEDIGT] PHP-Variablen Problem in MySql

Nakroma

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

Hier ist meine Datenbank:
5qejG.png


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

PHP:
$aendern2 = "UPDATE Squads SET '".$i_member."'='".$Name."' WHERE Name='".$Squad."'";

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;
 
Ich würde in PHP die Zeile eher so schreiben:

PHP:
$aendern2 = "UPDATE Squads SET '".$i_member."'='".$Name."' WHERE Name='".$Squad."'";

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;

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

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

ohne mehr infos kann man nicht helfen.

Cheffchen
 
Werbung:
Hallo,

gibts das den Datensatz denn der bei "Name" gesucht wird?
sql in de art vorhanden
Code:
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? :D
 
Hört Ihr mir überhaupt zu? Sobald ich
PHP:
'$i_member'
durch
PHP:
Member2
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 :/
 
Werbung:
Ich habs Problem gelöst... hat vorher nicht funktioniert jetzt aber plötzlich lol.
PHP:
$i_member='$Name'
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.
 
Werbung:
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'";

und so funktioniert es:
PHP:
$aendern2 = "UPDATE Squads SET $i_member='$Name' WHERE Name='$Squad'";
 
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)."'";
 
Es funktioniert, ist aber trotzdem falsch!!!
Korrekt schreibt man das:
PHP:
$aendern2 = "UPDATE `Squads` SET `$i_member` ='$Name' WHERE `Name`='$Squad'";
Tabellen- und Spaltemnamen gehören zwischen Backticks
 
Werbung:
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)."'";
 
Zurück
Oben