Supportnet Computer
Planet of Tech

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

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.

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

$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.

Antwort 6 von ClemBra

...was ist mit
Zitat:
$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

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...

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.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: