Fehler beim ndern von Datenstzen
Redaktionelle Einordnung
Diese archivierte Diskussion behandelt Fehler beim ndern von Datenstzen aus Sicht der Rubrik PHP & MySQL.
CMS- und Technikfragen sind heute besonders dann relevant, wenn sie Indexierung, Rendering, interne Verlinkung oder Relaunch-Risiken beeinflussen.
Sinnvoll nutzbar bleibt der Thread vor allem als historischer Kontext, für typische Fragestellungen und zur Einordnung älterer Empfehlungen.
Startbeitrag
Originaler Foreninhalt in modernisierter Darstellung.
Hey,
ich habe ne Seite wo ich Datensätze ändern muss, bekomm aber folgenden Fehler:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in B:\xampp\htdocs\bibo\func\uchange.php on line 40
Hier kommt alles was ab der Zeile 40 ist:
$abfrage2 = "UPDATE " . $tabname . " SET user = '" . $usernew . "', pwddb = '" . $pwddbnew . "', vname ='" . $vnamenew . "', nname ='" . $nnamenew .'" WHERE id = " . $wert . "";
$erg2 = mysql_db_query("$dbname",$abfrage2,$verbindung);
or die ("Fehler mit der Datenbank" . mysql_error());
mysql_close ($verbindung) ;
echo "Die Daten wurden erfolgreich geändert";
hoffe ihr könnt mir helfen.
MFG
Daniel
Antworten
1 BeiträgeHi Daniel,
ich würde dir zu einem Editor mit Syntax-Highlighting raten, da sieht man solche Fehler recht schnell.
Der Fehler liegt hier $nnamenew .\'" WHERE id = " . $wert . "";
Korrekt wäre: $nnamenew ."\' WHERE id = " . $wert . "";
Achte auf die Unterscheidung von single- und double-quotes.
Zwei Zeilen später findet sich allerdings noch ein Fehler:
$erg2 = mysql_db_query("$dbname",$abfrage2,$verbindung);
or die ("Fehler mit der Datenbank" . mysql_error());
Richtig wäre: $erg2 = mysql_db_query("$dbname",$abfrage2,$verbindung) or die ("Fehler mit der Datenbank" . mysql_error());
Davon ab gibt es noch ein paar Unschönheiten: . $wert . "";
Ein "" am Ende bewirkt nichts. Das . "" kannst du also weglassen. $erg2 = mysql_db_query("$dbname",$abfrage2,$verbindung);
$dbname enthält mit hoher wahrscheinlichkeit bereits einen String und wenn nicht, wandelt PHP intern automatisch um. Statt "$dbname" reicht also $dbname. $abfrage2 = "UPDATE " . /...
Innerhalb von double-quotes werden Variablen ausgewertet. Du kannst also zur Verbesserung der Lesbarkeit auf das stndige ffnen und Schlieen der double-quotes verzichten: $abfrage2 = "UPDATE $tabname SET user = \'$usernew\', pwddb = \'$pwddbnew\', vname =\'$vnamenew\', nname =\'$nnamenew\' WHERE id = $wert";
Davon ab noch eine Frage zur Sicherheit: Wo kommt der Inhalt der ganzen Variablen her? Wenn sie vom User (z.B. über ein Formular) gesetzt werden können, validierst du sie vorher?