SQL ERROR [ mysql4 ]

Fragen zur Bedienung von phpBB 3.0.x, Probleme bei der Benutzung und alle weiteren Fragen inkl. Update auf die neuste phpBB 3.0.14 Version
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
CaLLiBRi
Mitglied
Beiträge: 9
Registriert: 05.01.2008 21:49

Beitrag von CaLLiBRi »

SteveHH hat geschrieben:
CaLLiBRi hat geschrieben: Ansonsten lösch ich es wieder, wenn das so anfällig ist und packe Wbblite drauf oder so...
Viel Spass :)
Jetzt weiss ich auch, wie du so viele Postings sammeln konntest. Wenn du nichts zu sagen hast, dann lass es doch auch bitte.

Das ist nunmal eine Überlegung, da PHPBB doch anscheinend sehr anfällig ist. Und ich habe keine Lust in kürze wieder von vorne anzufangen. Ich suche ja grade aus dem Grund ein neues Forum, da das PHPKIT interne einfach keine Funktionen hat und auch Fehlermeldungen gibt. Nur liegt es da an den Signturen, die bereiten irgendwie Probleme.

@ bantu: Ich teste nochmal etwas, aber ich komme evtl gerne darauf zurück, danke für die schnelle Hilfe bis hier hin.
Despair
Mitglied
Beiträge: 51
Registriert: 22.05.2004 16:04

Beitrag von Despair »

hi Leute,

die User unseres Forums erhalten sporadisch nach dem Absenden eines Beitrages eine ähnlich lautende Fehlermeldung

genauer gesagt gehts um diese hier (soeben tauchte sie auch das erste mal seit der Installation bei mir auf):

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysql4 ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, [1064]

SQL

SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber FROM phpbb3_forums_watch fw, phpbb3_users u WHERE fw.forum_id = 6 AND fw.user_id NOT IN (1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) AND fw.notify_status = 0 AND u.user_type IN (0, 3) AND u.user_id = fw.user_id

BACKTRACE

FILE: includes/db/mysql.php
LINE: 158
CALL: dbal_mysql->sql_error()

FILE: includes/functions_posting.php
LINE: 1174
CALL: dbal_mysql->sql_query()

FILE: includes/functions_posting.php
LINE: 2407
CALL: user_notification()

FILE: posting.php
LINE: 1002
CALL: submit_post()
// Ein paar Nullen entfernt - bantu


das komische ist, dass der Beitrag trotz dieser Fehlermeldung im Forum gepostet wird.

Wißt ihr Rat?
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Da scheint irgendetwas im SQL Statement falsch zu sein.

Normalerweise sollte der Aufruf so erfolgen:

Code: Alles auswählen

SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber FROM phpbb3_forums_watch fw, phpbb3_users u WHERE fw.forum_id = 6 AND fw.user_id NOT IN (1, 2) AND fw.notify_status = 0 AND u.user_type IN (0, 3) AND u.user_id = fw.user_id 
Die ganzen " 0 " angeben sollten dort nicht erscheinen.

Evtl. wurde etwas an der includes/functions_posting.php verändert ?

Der entsprechende Code Block sollte dort so verankert sein:
( Zeile 1167 bis 1174 )

Code: Alles auswählen

		$sql = 'SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber
			FROM ' . FORUMS_WATCH_TABLE . ' fw, ' . USERS_TABLE . " u
			WHERE fw.forum_id = $forum_id
				AND fw.user_id NOT IN ($sql_ignore_users)
				AND fw.notify_status = 0
				AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')
				AND u.user_id = fw.user_id';
		$result = $db->sql_query($sql);
Despair
Mitglied
Beiträge: 51
Registriert: 22.05.2004 16:04

Beitrag von Despair »

danke für deine Zeit

hm, soweit ich das sehe stimmen die Einträge bei mir

Code: Alles auswählen

$sql = 'SELECT u.user_id, u.username, u.user_email, u.user_lang, u.user_notify_type, u.user_jabber
			FROM ' . FORUMS_WATCH_TABLE . ' fw, ' . USERS_TABLE . " u
			WHERE fw.forum_id = $forum_id
				AND fw.user_id NOT IN ($sql_ignore_users)
				AND fw.notify_status = 0
				AND u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ')
				AND u.user_id = fw.user_id';
		$result = $db->sql_query($sql);

was meinst du mit "da scheint irgendetwas im SQL Statement falsch zu sein"? Kann ich da irgendwas machen?

was mich außerdem wundert ist, dass mein Provider erst kürzlich eine Mail in Umlauf gebracht hat, dass mySQL 5 auf allen Servern installiert worden sein, was mich dann dazu veranlaßte phpBB3 zu installieren, weil das alte Forum damit leider bei mir nicht mehr lief.

Die Fehlermeldung deutet doch aber eher darauf hin, dass das nicht so ist, oder?
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

OK,

ich hatte mich in einem SQL Statement verlesen.

Der Problemfall ist die Variable: $sql_ignore_users

Prüfe mal Deine BAN Liste im phpMyAdmin und schaue nach ob sie viele gebannte Email Adressen beinhaltet.

Wenn ja, haben die Ban Einträge eine ban_userid vom Wert 0.

Das macht aber in diesem Check aber keinen Sinn. ( Eine user_id mit dem Wert 0 gibt es nicht )

Diese Variable wird etwas weiter oben in der functions_post.php generiert:

Code: Alles auswählen

	// Get banned User ID's
	$sql = 'SELECT ban_userid
		FROM ' . BANLIST_TABLE;
	$result = $db->sql_query($sql);


Versuche mal den Code hiermit zu ersetzen:

Code: Alles auswählen

	// Get banned User ID's
	$sql = 'SELECT ban_userid
		FROM ' . BANLIST_TABLE . '
		WHERE ban_userid <> 0';
	$result = $db->sql_query($sql);
Zuletzt geändert von Dr.Death am 21.02.2008 11:14, insgesamt 2-mal geändert.
Despair
Mitglied
Beiträge: 51
Registriert: 22.05.2004 16:04

Beitrag von Despair »

Dr.Death hat geschrieben:Prüfe mal Deine BAN Liste im phpMyAdmin und schaue nach ob sie viele gebannte Email Adressen beinhaltet.
die Foren-Bannliste ist noch aus phpBB 2 Zeiten recht groß und wurde beim konvertieren natürlich auch übernommen. Damals gabs (und gibt es wohl auch noch) bei euch im entsprechenden Bereich eine Liste mit email-Adressen die gebannt werden sollen bei der Foren-Anmeldung (wir hatten in der Woche circA 20 Spambot-Einträge)

Wenn ich diese Liste lösche, anstelle der von dir geposteten Änderungen vorzunehmen, bringt das dann den gleichen Effekt, oder nicht? Der Hintergrund ist der, dass die URL des Forums sich ohnehin geändert hat und durch die capture-Sicherheitsabfrage im neuen phpBB diese Spam-Anmeldungen ohnehin nicht mehr auftreten

Wenn es trotzdem nötig ist die Datei zu ändern werde ich es aber selbstredend tun
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Ändere bitte mal die Datei.

Das bringt bei späteren BANs wahrscheinlich eine Entlastung der MySQL Abfrage.
Despair
Mitglied
Beiträge: 51
Registriert: 22.05.2004 16:04

Beitrag von Despair »

alles klar. Ich habs mal geändert und werde beobachten ob der Fehler weiterhin auftritt. Danke bis hierher aber mal für deine Mühe
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17473
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

Beitrag von Dr.Death »

Hm.... noch eine kleine "Verbesserung".

Es fiel mir selbst gerade auf, da ich 2 User bei mir vor einem versehentlichen BAN geschützt habe.

Diese User würden nun keine Benachrichtigungen mehr enthalten....

Daher währe der neue Code nun:

Code: Alles auswählen

	// Get banned User ID's
	$sql = 'SELECT ban_userid
		FROM ' . BANLIST_TABLE . '
		WHERE ban_userid <> 0
		AND ban_exclude <> 1';
	$result = $db->sql_query($sql);
BTW: Ich habe das ganze mal in den Bugtracker eingestellt: http://www.phpbb.com/bugs/phpbb3/ticket ... t_id=21795
Antworten

Zurück zu „[3.0.x] Administration, Benutzung und Betrieb“