Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Query spricht falsche Tabelle an
#1
Schönen Tag zusammen,

ich habe ein Plugin entwickelt für einen Benutzer ganz individuell und das Plugin gerade für denjenigen erweitert -> bis zur Erweiterung hat auch alles funktioniert. In der Erweiterung wurde lediglich ein Query angepasst. 

In meinem Testforum lokal läuft es und auch in meinem Live-Test-Forum (online) läuft es ohne erkennbare Probleme. Bei dem User allerdings erscheint folgender SQL Fehler:

Code:
MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
    1146 - Table 'uzbroifo_mybb739.mybb_posts' doesn't exist
Query:
    SELECT COUNT(p.pid) FROM mybb_posts p INNER JOIN mybb_threads t ON p.tid = t.tid WHERE p.uid != t.uid AND p.uid =1 AND p.fid IN (91,31)

Please contact the MyBB Group for technical support.

Wie im Query gesehen werden kann, spreche ich NIE irgendeine Tabelle namens "uzbroifo_mybb739.mybb_posts" an. Wenn der Benutzer mein Plugin deaktiviert klappt wieder alles. Kann sich jemand aus irgendeinem Grund erklären weshalb MyBB solch eine Fehlermeldung schmeißt obwohl ich diese Tabelle im Query nicht anspreche? 

Sehr merkwürdig... Der Benutzer hatte auch alle eigene Plugins deaktiviert und es hat trotzdem nicht funktioniert. Der Fehler verschwindet erst, nachdem er mein Plugin deaktiviert.  Wenn er die alte Version des Plugins nimmt (ohne den angepassten Query mit einem JOIN) funktioniert es auch wieder. Also entweder habe ich etwas im Query falsch gemacht - oder ich stehe hier komplett auf dem Schlauch. Big Grin

Hier mal der Query im PHP:

PHP-Code:
$userid $mybb->user['uid'];
$queryCounting $db->write_query("SELECT COUNT(p.pid)
FROM mybb_posts p
INNER JOIN mybb_threads t
ON p.tid = t.tid
WHERE p.uid != t.uid 
AND p.uid =" 
$userid "
AND p.fid IN (" 
$search_in ")
"
);

$countedposts $db->fetch_array($queryCounting); 

Vielleicht hat ja jemand eine Idee? In meinen frischen Installationen klappt es. Sehr merkwürdig. Und selbst wenn ein anderes Plugin (fremdes Plugin) dafür verantwortlich ist, was hat mein Query damit zutun?
Zitieren
#2
(24.08.2019, 12:17)itsmeJAY schrieb: Wie im Query gesehen werden kann, spreche ich NIE irgendeine Tabelle namens "uzbroifo_mybb739.mybb_posts" an. Wenn der Benutzer mein Plugin deaktiviert klappt wieder alles. Kann sich jemand aus irgendeinem Grund erklären weshalb MyBB solch eine Fehlermeldung schmeißt obwohl ich diese Tabelle im Query nicht anspreche? 
MySQL gibt bei Fehlermeldung in der Regel Datenbank und Tabelle in dieser Notation an. Die Datenbank wird hier auch nicht das Problem sein.
(24.08.2019, 12:17)itsmeJAY schrieb:
PHP-Code:
$userid $mybb->user['uid'];
$queryCounting $db->write_query("SELECT COUNT(p.pid)
FROM mybb_posts p
INNER JOIN mybb_threads t
ON p.tid = t.tid
WHERE p.uid != t.uid 
AND p.uid =" 
$userid "
AND p.fid IN (" 
$search_in ")
"
);

$countedposts $db->fetch_array($queryCounting); 
Offensichtlich beachtest du hier das Tabellen-Präfix nicht.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Danke erstmal für die Antwort.

Ich beachte doch mybb als Präfix? Oder meinst du ich sollte stattdessen die Konstante TABLE_PREFIX nehmen? Wo soll da denn der Unterschied sein?

Bei mir in der Testversion klappt es ja auch ohne die Konstante. Es kann ja sein dass MySQL bei Fehlermeldungen Datenbank und Tabelle angezeigt. Aber trotzdem müsste mybb_posts doch vorhanden sein in der DB? Hmmm...
Zitieren
#4
Die Tabelle heißt nicht "mybb_posts"!
Wie Stefan schon festgestellt hat, wurde ein anderes Präfix gewählt.
Benutze also besser die Variable:

SELECT ... FROM ".TABLE_PREFIX."_posts ...

[ExiTuS]
MyBB + innovative Themes:
NokiaPort.de Forum Nokia-Traditionsforum seit 2006.
Live Escape Game Forum Diskussionsplattform für Escape-Rooms.
Unlösbares Problem, Dilemma? -> das Nötel Smile
Zitieren
#5
Danke erstmal. Versuche ich gleich mal. Dürfte trotzdem komisch sein, denn die vorherige Version des Plugins funktionierte auch mit direkten Zugriff auf mybb_posts (nur halt ohne join).

Aber ich berichte sobald getestet. Danke
Zitieren
#6
(24.08.2019, 12:54)itsmeJAY schrieb: Wo soll da denn der Unterschied sein?
Das Präfix kann bei der Installation frei gewählt werden. Wink
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#7
Ich liege gerade am See und mir ist aufgefallen das ich in der vorherigen Version die simple select Methode genommen habe. War also klar das es damit funktionierte. Ich änder das gleich mal ab und bin guter Dinge das es dann funktioniert. Danke euch Big Grin
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  query mit $post['uid'] in showthread.php möglich? Luna 7 3.785 02.07.2017, 17:51
Letzter Beitrag: Luna
  MySQL Query TPhil 5 2.766 17.02.2017, 13:51
Letzter Beitrag: TPhil