[OOP] WBB-Plugin

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Ich arbeite derzeit an einem WBB-Plugin, einem PokeBBCode.
    Wiefolgt sind meine BBCode-Klasse aus:


    Allerdings erkennt er den query();-Befehl nicht und deswegen kommt folgende Meldung:


    Zitat

    Fatal error: Call to undefined method MySQLDatabase::query() in /home/www/cwcity/hosting/f/l/floinkboard/htdocs/wcf/lib/data/message/bbcode/POKEBBCode.class.php on line 15

    #


    Wie kann ich das ersetzen bzw. was mache ich falsch?

  • Die Methode, nach der du suchst, heißt sendQuery, was du mit Google in 5 Minuten selbst hättest rausfinden können. Ansonsten sieht der Code halbwegs okay aus.


    Allerdings solltest du den $content nicht für HTML maskieren, sondern für SQL. Niemand hindert mich daran ';DROP TABLE pokedex;-- als Pokemon-Namen einzutragen, was einfach die Tabelle wegschmeißen würde.

    FC (PKMN Y): 3282-3144-2343 — Safarityp: Pflanze (Maracamba, Folikon, Tangela) — Bei Interesse schickt mir einfach ne PM ;)


    Testet meine Pokemon-Checkliste für Gen. 1 bis 6 (für Sammler, und solche die es werden wollen – jetzt mit vollständiger Habitatsliste für alle Editionen – OR/AS noch minimal unvollständig)

  • Zitat

    Fatal error: Invalid SQL: SELECT * FROM `pokedex` WHERE name_de = 'Bisasam'


    Bei folgendem Code:



    Was Zeile 11 betrifft, bin ich mir nicht sicher ob es diese Funktion wirklich gibt^^

  • Wenn es die Methode in Zeile 11 nicht gäbe, müsstest du eine Fehlermeldung ähnlich der aus dem Startpost enthalten. Inwiefern das SQL falsch ist, kann ich ohne genauere Kenntnis des Datenbankschemas nicht sagen, für mich sieht das OK aus. Überprüf mal, ob die Tabelle tatsächlich exakt so heißt, und nicht evtl. anders (z.B. "pokemon" o.ä.), und mach das Selbe für den Namen der Spalte.

    FC (PKMN Y): 3282-3144-2343 — Safarityp: Pflanze (Maracamba, Folikon, Tangela) — Bei Interesse schickt mir einfach ne PM ;)


    Testet meine Pokemon-Checkliste für Gen. 1 bis 6 (für Sammler, und solche die es werden wollen – jetzt mit vollständiger Habitatsliste für alle Editionen – OR/AS noch minimal unvollständig)

  • was einfach die Tabelle wegschmeißen würde.


    Nein. PHP unterstützt schon seit Jahren nur eine Abfrage pro Abfrage. Semikola haben - aus Sicherheitsgründen - keine besondere Bedeutung in PHP. Der üblichen Verdächtige ist eher nen UNION ALL, um Daten aus anderen Tabellen zu suchen.

    Bei folgendem Code:

    Die Fehlermeldung ist ganz offensichtlich nicht vollständig, da unter anderem der Stacktrace fehlt.

    Was Zeile 11 betrifft, bin ich mir nicht sicher ob es diese Funktion wirklich gibt^^


    Nein, gibt es nicht. Genau so wenig wie $numberquery ein Objekt ist, sondern ein Integer. Und darauf kannst du natürlich keine Methoden ausführen. Meinst du, dass du mit "Raten" ans Ziel kommst?

  • Also, wenn du es weisst dann kannst du mir auch gleich sagen, was ich besser machen soll, denn ich habe schon stundenlang gegoogled und ihr müsst nicht denken ich hätte nicht vorher versucht diese Fehler selbstständig zu beseitigen.
    Im Anhang jetzt die komplette Fehlermeldung falls noch jemand denkt er könnte wirklich produktiv helfen.

  • Und alle fragen sich, wie zur Hölle kommt der auf die Datenbank auf sagecrowne?
    Diese Seite existiert bei meinem Hoster, aber das ist ein völlig anderer Webspace und ich habe nie irgendwelche Daten von diesem im WBB angegeben?

  • Läuft, vielen Dank an alle :)
    //e:

    Code
    Fatal error: Call to a member function fetch_object() on a non-object in /home/www/cwcity/hosting/f/l/floinkboard/htdocs/wcf/lib/data/message/bbcode/POKEBBCode.class.php on line 16


    Diese Fehlermeldung übrigens noch :/
    also ist das object leer, etwas ähnlich sagte @TimWolla ja bereits, aber wie kann ich das beheben?

  • Es soll hilfreich sein, sich die Dokumentation zu den Frameworks, die man verwendet, durchzulesen. Hier, ich habs für dich rausgesucht: https://www.woltlab.com/downloads/manual/wcfdoc_en.pdf


    Und ums dir noch leichter zu machen, hier der relevante Teil:

    Zitat

    The method sendQuery() sends an SQL-query to the database server and returns the result identifier.


    Sprich: Die Methode gibt dir nicht das Query-Ergebnis zurück, sondern einen Identifier, mit dem du dieses ansprechen kannst. Du musst das dann noch abholen, etwa mit der Methode fetchArray. Oder du verwendest gleich getFirstRow.


    Btw., "SELECT *" sollte man außer für ad-hoc Abfragen nicht verwenden.