Datenbankquery - Druckversion +- MyBB.de Forum (https://www.mybb.de/forum) +-- Forum: Archiv (https://www.mybb.de/forum/forum-57.html) +--- Forum: MyBB 1.2.x und älter (https://www.mybb.de/forum/forum-27.html) +---- Forum: Allgemeiner Support (https://www.mybb.de/forum/forum-36.html) +---- Thema: Datenbankquery (/thread-7635.html) |
Datenbankquery - Dave - 11.11.2007 Hi, ich versuche einen Blog auf meienr Homepage zu erstellen, der auf MyBB aufbaut. Der Blog steht bereits, jetzt wollte ich eine Seite bauen, die die Einträge nach Kategorie gesordnet anzeigt, die Kategorien sind bereits eingebaut. Allerdings habe ich ein Problem mit dem Datenbankquery, es sieht folgend aus: PHP-Code: if ($_GET['action'] == "cat") Die URL mit der dieses Query aktiviert wird ist z.B. folgende: http://localhost:8888/showblognews.php?action=cat&cat=Projekte In der Datenbanktabelle threads ist das Feld category eingefügt und es existiert auch ein Eintrag mit der Kategorie "Projekte".Das Datenbankquery scheint aber nichts zurückzugeben, da ich nur eine weiße Seite bekomme, was ganz sicherlich nichts mit dem Rest der Dateien zu tun hat, da wenn ich die cat-Überprüfung im WHERE-Teil des Querys rausnehme bekomme ich wieder alles komplett angezeigt. Weiß jemand was falsch ist? RE: Datenbankquery - Garlant - 11.11.2007 Hallo Dave, PHP-Code: fid IN (".$mybb->settings['blogfid'].") Dein Query enthällt zwei Fehler, welche das Problem aber noch nicht lösen werden. 1.) (Dies ist kein Wirklicher Fehler, mehr ein Hinweis) Bei jedem anderen DB-Typen würde dies ein Fehler verursachen: PHP-Code: SELECT t.*, t.username AS threadusername,... Eleganter ist es da, die Felder einzeln aus der Datenbank zu holen und entsprechend zu preperieren, als mit dem all Statement. 2.) Dein Query lässt Sql-Exploits zu. Ersetze: PHP-Code: WHERE fid IN (".$mybb->settings['blogfid'].") AND t.category = ".$_GET['cat']." AND t.closed NOT LIKE 'moved|%' PHP-Code: WHERE fid IN (".$mybb->settings['blogfid'].") AND t.category ='".$db->escape_string($_GET['cat'])."' AND t.closed NOT LIKE 'moved|%' Edit: singlequotes hinzugefügt RE: Datenbankquery - StefanT - 11.11.2007 Sollte PHP-Code: "".$db->escape_string($_GET['cat'])."" PHP-Code: '".$db->escape_string($_GET['cat'])."' RE: Datenbankquery - Dave - 11.11.2007 Danke für eure Hilfe. Ja, um die Sicherheit hatte ich mich noch nit gekümmert. Ich wollte erstmal, dass es funktioniert. Nein $mybb->settings['blogfid'] enthält lediglich eine ID, allerdings verwende ich viele Code-Teile aus der portal.php wie auch dieses Query und da ich mir die Möglichkeit offen lassen wollte später aus welchen Gründen auch immer eine zwete ID einzufügen habe ich das nicht geändert. //Edit Hmm, hätte ich mich mal gleich um die Sicherheit mitgekümmert, daran scheint es nämlich geleegen zu haben. Nochmals vielen Dank für eure Hilfe. RE: Datenbankquery - Dave - 11.11.2007 Ok, jetzt habe ich doch glat das nächst Query, das mir Kopfschmerzen bereitet: PHP-Code: $query = $db->query("SELECT image FROM ".TABLE_PREFIX."blogimages WHERE category = '".$db->escape_string($announcement['category'])."'"); Seitdem ich das eingefügt habe erhalte ich nur eine weiße Seite, davor hat es funktioniert. Der Tabllen aufbau von mybb_blogimages ist folgender: iid category image RE: Datenbankquery - Garlant - 11.11.2007 Hallo Dave, Versuche es doch mal bitte so: PHP-Code: $query = $db->query("SELECT image FROM ".TABLE_PREFIX."blogimages WHERE category = '".$db->escape_string($announcement['category'])."'"); Mfg Garlant RE: Datenbankquery - Dave - 11.11.2007 Nein, es funktioniert leider nicht. RE: Datenbankquery - Garlant - 11.11.2007 Hallo Dave, wie wird den $announcement['category'] gefüllt? Wenn ich es jetzt bedenke fällt mir auf, dass $announcement ja erst später definiert wird, laut deinem Source-Auszug. RE: Datenbankquery - Dave - 11.11.2007 $announcement wird mit sämtlichen Daten befüllt die das Query aus der Datenbank für den entsprechenden Post bekommt, es ist das gleiche System wie in der portal.php. Ich habe mein Problem jetzt auch schon gelöst. Es lag and dem result();, ich weiß nicht wieso. Ich benutze jetzt fetch_array(); und lasse dann das Template auf das Array zugreifen, das funktioniert reibungslos. RE: Datenbankquery - Dave - 12.11.2007 Also mit Datenbankquerys scheine ich es überhaupt nicht zu haben: PHP-Code: $query3 = mysql_query("SELECT tid FROM ".TABLE_PREFIX."threads WHERE category = '".mysql_escape_string(Privates)."'"); |