Parse Error

Hallo,

ich habe folgendes Problem. Es wird immer folgender Fehler ausgegeben:

Parse error: syntax error, unexpected ';' in /mnt/cr1/03/519/00000019/htdocs/konfig/include/meinaccount.php on line 54.Zeile 54 entspricht dabei der Zeile nach WHERE, also „Benutzer = …“.

[php] $sql = „UPDATE
tbl_benutzer
SET
Benutzer = '“.trim($_POST[‚benutzername‘].„',
Name = '“.trim($_POST[‚name‘]).„',
Email = '“.addslashes(trim($_POST[‚email‘])).„’
WHERE
Benutzer = '“.$_SESSION[‚Benutzername‘].„';“;[/php]Wo soll der Fehler sein?

mach’ halt das erste semikolon weg…

Nils aka XraYSoLo

In der Zeile darüber fehlt ein abschließendes Semikolon … Leider hattest Du diesen Anteil nicht mit gesendet …

@XraYSoLo wie kommst Du darauf, dass ein Semi zu viel wäre? Ich habe keines gesehen

Gruß,
Jumper, the II.

[php]
Benutzer = ‚„.$_SESSION[‚Benutzername‘].“‘;";
[/php]

fällt dir hier was auf?

Nils aka XraYSoLo

er hat recht… es ist eins zu viel!

$sql = "UPDATE tbl_benutzer SET Benutzer = '".trim($_POST['benutzername']."', Name = '".trim($_POST['name'])."', Email = '".addslashes(trim($_POST['email']))."' WHERE Benutzer = '".$_SESSION['Benutzername']."'";

so müsste es richtig sein aber ich mache immer…

mysql_query(„UPDATE
tbl_benutzer
SET
Benutzer = '“.trim($_POST[‚benutzername‘].„',
Name = '“.trim($_POST[‚name‘]).„',
Email = '“.addslashes(trim($_POST[‚email‘])).„’
WHERE
Benutzer = '“.$_SESSION[‚Benutzername‘].„'“);

stimmen müsste beides hier. (der obere ist deiner nur korrigiert)

Dass Du
[php]$sql = „UPDATE

Benutzer = '“.$_SESSION[‚Benutzername‘].„';“;[/PHP]
falsch interpretierst?

OT:
Wenn es nach Deinen Wünschen geht, hätte anstatt seines Codes folgender Schnipsel stehen müssen:
[PHP]$sql = „UPDATE“ . „\n“ .
" tbl_benutzer" . „\n“ .
" SET" . „\n“ .
" Benutzer = ‚„.trim($_POST[‚benutzername‘].“‘," . „\n“ .
" Name = ‚„.trim($_POST[‚name‘]).“‘," . „\n“ .
" Email = ‚„.addslashes(trim($_POST[‚email‘])).“‘" . „\n“ .
" WHERE" . „\n“ .
" Benutzer = ‚„.$_SESSION[‚Benutzername‘].“‘;";[/PHP]
Aber selbst diese Umschreibung löst nicht sein Problem, weil sein Problem eine Zeile vor $sql = … steht.

Gruß,
Jumper, the II.

Hääää? SQL-Statements sind grundsätzlich mit einem Semi abschließbar. Bei mehreren Statements in einer Abfrage ist es sogar Pflicht.

Unabhängig davon hatte WebMuce einen PHP-Fehler und keinen SQL-Fehler. Wenn Du jetzt das Zeichen aus dem SQL-Statement entfernst, wird sich am PHP-Fehler nichts ändern. Und wenn Du das Semi am Ende enfernst wird sich immer noch nichts ändern, weil PHP bisher noch gar nicht zur Zeile kommt, um den Fehler zu melden.

Gruß,
Jumper, the II.

ich benutze nur mysql_query(„“); und da gibt es nur das Semikolon am Ende nach der Klammer o0

Es geht um die Abfrage !!!

Ruf mal Deinen phpmyadmin o. what ever auf und mach ne Abfrage alias

SELECT * FROM tbl_foo WHERE foo = foo

Dann wirst Du sehen, das

SELECT * FROM tbl_foo WHERE foo = foo

sowohl als auch

SELECT * FROM tbl_foo WHERE foo = foo;

funktionieren.

Das hat nix mit der php Funktion zu tun !

Für eine einzelne Abfrage stimmt dies.

Aber Sachen ala:

SELECT * FROM temp_users ORDER BY name ASC; TRUNCATE temp_users

wirst du um das ; nicht herum kommen, oder du machst 2* ein mysql_query.
Je nach Menge belastest du den Server enorm mit mehreren Querys, und dein Script wird lange laufen…sehr lange…

Offtopic - SQL Statements

Du hast - um es mit deinen Statement zu verfassen - folgendes Statement
[PHP]mysql_query( „SELECT * FROM table WHERE id > 0;“);[/PHP] als fehlerhaft betitelt und möchtest stattdessen
[PHP]mysql_query( „SELECT * FROM table WHERE id > 0“);[/PHP] als einzigst korrekte Form benennen …

Beides ist laut SQL und mySQL zulässig.

/EDIT:
Und der Vollständigkeit halber … Sprachbeschreibung SQL92

  <semicolon>    ::=   ;
  <SQL terminator>    ::=   END -EXEC | <semicolon> | <right paren>
  <embedded SQL statement>    ::=   <SQL prefix> <statement or declaration> [ <SQL terminator> ]

Ich hoffe, Du kannst Grammatiken lesen :slight_smile:
\EDIT

Und es löst nicht das Problem :lol:

Gruß,
Jumper, the II.

Richtig, genau wie ich es auch sagte !

Es ist absolut zulässig.