Supportnet / Forum / Skripte(PHP,ASP,Perl...)
unexpected T_STRING, aber wo liegt der Fehler?
Frage
Ich bekomme in dieser Zeile immer Parse error: parse error, unexpected T_STRING
$sql = "DELETE FROM ".db_prefix("module_userprefs")." WHERE userid=".$session[user][acctid] AND modulname not 'mod_rp';
Ich stehe aber völlig auf dem Schlauch und kann den Fehler daran einfach nicht finden.
Antwort 1 von Supermax
so müßte es korrekt heißen:
$sql = "DELETE FROM ".db_prefix("module_userprefs")." WHERE userid=".$session[user][acctid]." AND modulname not 'mod_rp'";Antwort 2 von Blanidur
Vielen Dank!
Ich hab da einiges hin und her probiert, aber scheinbar immer igendwo ein " oder ' vergessen. Nun klappts ;)
Ich hab da einiges hin und her probiert, aber scheinbar immer igendwo ein " oder ' vergessen. Nun klappts ;)
Antwort 3 von Blanidur
Tut mir leid, aber es funktioniert so leider doch nicht.
Es kommt zwar nicht mehr zu einem Fehler, aber gelöscht wird so nun leider garnichts mehr.
Es kommt zwar nicht mehr zu einem Fehler, aber gelöscht wird so nun leider garnichts mehr.
Antwort 4 von PowerPaul86
Also solche Probleme habe ich als auch
ich versuche dann meistens immer 5-10 min lang den fehler zu sehen
wenn ich dann aber doch nicht finde zieh ich das einfach raus
das problem ist dir ja bewusst, dass er nicht weiss wo die php befehle bei db_prefix("module_userprefs"); aufhöhren und die SQL befehle des strings $sql aufhöhren
ich versuche dann meistens immer 5-10 min lang den fehler zu sehen
wenn ich dann aber doch nicht finde zieh ich das einfach raus
$vari1 = db_prefix("module_userprefs");
$vari2 = $_SESSION['user']['acctid'];
$sql = "DELETE FROM ".$vari1."
WHERE userid = ".$vari2."
AND modulname NOT 'mod_rp'";das problem ist dir ja bewusst, dass er nicht weiss wo die php befehle bei db_prefix("module_userprefs"); aufhöhren und die SQL befehle des strings $sql aufhöhren
Antwort 5 von Blanidur
Oh, tut mir leid. Die obere Variante funktioniert doch bestens. Ich hatte in der ganzen Sache nur einen Tipfehler drin.
Es heisst nicht "AND modulname not " sondern "AND modulename not ". Die Zeile ansich ist also in der Form korreckt.
Es heisst nicht "AND modulname not " sondern "AND modulename not ". Die Zeile ansich ist also in der Form korreckt.
Antwort 6 von ClemBra
...was ist mit
Funktioniert das ohne user und acctid in Anführungszeichen zu stellen, sind das Konstanten, die mit define() definiert wurde, oder hat das Forum die weg gemacht?
Gruß Clemens
Zitat:
$session[user][acctid]
$session[user][acctid]
Funktioniert das ohne user und acctid in Anführungszeichen zu stellen, sind das Konstanten, die mit define() definiert wurde, oder hat das Forum die weg gemacht?
Gruß Clemens
Antwort 7 von Blanidur
Das Forum hat da nichts weg gemacht. Es funktioniert so.
Antwort 8 von ClemBra
stimmt, hab nochmal richtig nachgedacht, aber wenn du ein
darüber setzt und Fehler auch angezeigt werden, hast du hässliche Notizen.
error_reporting(E_ALL);
darüber setzt und Fehler auch angezeigt werden, hast du hässliche Notizen.
Antwort 9 von Blanidur
Warum?
Antwort 10 von son_quatsch
Warum was?
Weil es nicht korrekt ist. Elemente eines Feldes sind entweder Ganzzahlen (z.B. Feld[20]) oder Strings (z.B. Feld['eins']). Bei Deinem Code denkt sich PHP "die dort genannte Konstante ist gar nicht definiert - hmm... ich versuch es mal als String zu deuten".
Siehe auch Doku http://de2.php.net/manual/de/language.types.array.php#language.type...
Weil es nicht korrekt ist. Elemente eines Feldes sind entweder Ganzzahlen (z.B. Feld[20]) oder Strings (z.B. Feld['eins']). Bei Deinem Code denkt sich PHP "die dort genannte Konstante ist gar nicht definiert - hmm... ich versuch es mal als String zu deuten".
Siehe auch Doku http://de2.php.net/manual/de/language.types.array.php#language.type...
Antwort 11 von ClemBra
Das ist meiner Meinung nach einer der Nachteile von PHP. Man kann vieles schnell machen, aber auch einiges zu schnell. Der Code ist erst gut, wenn auch mit einem E_ALL, bei PHP5
error_reporting(E_ALL | E_STRICT);
keine PHP-Meldungen mehr erscheinen.
Gruß Clemens
PS: Pfuschen mit dem @ gilt nicht.
error_reporting(E_ALL | E_STRICT);
keine PHP-Meldungen mehr erscheinen.
Gruß Clemens
PS: Pfuschen mit dem @ gilt nicht.

