Mit MySQLi mehrere Tabellen auslesen
Phil
- php
Hallo zusammen
Ich möchte gerne mit MySQLi Daten aus 2 verschiedenen Tabellen auslesen. Der Code funktioniert nur mit einer Tabelle, sobald ich eine Zweite angebe erscheint folgende Fehlermeldung: "call to a member function fetch_assoc() on a non-object"
Danke für Eure Hilfe.
...
$sql = "SELECT * FROM `fahrer` AS f, `teams` AS t WHERE t.fahrer1 = f.name order by punkte DESC";
$ergebnis = $db->query($sql);
while($zeile = $ergebnis->fetch_assoc())
{
...etwas tun
);
...
Hi,
Ich möchte gerne mit MySQLi Daten aus 2 verschiedenen Tabellen auslesen. Der Code funktioniert nur mit einer Tabelle, sobald ich eine Zweite angebe erscheint folgende Fehlermeldung: "call to a member function fetch_assoc() on a non-object"
Das ist ein Folgefehler, weil du versuchst auf ein Abfrageergebnis zuzugreifen, das gar nicht existiert - weil die Abfrage schief ging.
Nutze mysqli->error, um herauszufinden, was die Datenbank an deiner Abfrage nicht mochte.
Das sind übrigens absolute Debugging-Basics.
MfG ChrisB
Danke für Eure Hilfe.
Folgende MySQLi Fehlermeldung erhalte ich: Column 'punkte' in order clause is ambiguous
Ich vermute das hat damit zu tun, dass die Spalte Punkte in beiden Tabellen vorkommt?
Hello,
Folgende MySQLi Fehlermeldung erhalte ich: Column 'punkte' in order clause is ambiguous
Ich vermute das hat damit zu tun, dass die Spalte Punkte in beiden Tabellen vorkommt?
Der Kandidat hat zwei Punkte und erhält dafür 100 :-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Danke.
Gibt es hierfür eine Lösung ohne auf den * verzichten zu müssen?
Hello,
Gibt es hierfür eine Lösung ohne auf den * verzichten zu müssen?
Wie jetzt? *?
Du musst deiner Datenbank sagen, aus welcher Tabelle Du die Punkte sehen willst bzw. danach sortieren willst. Willst du "order by t.punkte" oder willst Du "order by f.punkte"?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi!
Folgende MySQLi Fehlermeldung erhalte ich: Column 'punkte' in order clause is ambiguous
Ich vermute das hat damit zu tun, dass die Spalte Punkte in beiden Tabellen vorkommt?
Dann musst du es eindeutig spezifizieren. Alternativ gingen auch eindeutige Aliasnamen oder die Spaltennummer wie in der Select-Klausel aufgelistet als Argument für ORDER BY. Beides macht sich mit dem Verzicht auf das * und der expliziten Aufführung der gewünschten Spalten besser.
Lo!
Hello,
Ich möchte gerne mit MySQLi Daten aus 2 verschiedenen Tabellen auslesen. Der Code funktioniert nur mit einer Tabelle, sobald ich eine Zweite angebe erscheint folgende Fehlermeldung: "call to a member function fetch_assoc() on a non-object"
Danke für Eure Hilfe.
...
$sql = "SELECT * FROMfahrer
AS f,teams
AS t WHERE t.fahrer1 = f.name order by punkte DESC";
$ergebnis = $db->query($sql);
hier fehlt die Kontrolle, ob $ergebnis überhaupt ein Objekt geworden ist, also die Query erfolgreich war.
[link:http://de2.php.net/manual/en/mysqli.query.php]
"... returns false on failure ..."
Und dann kannst Du dir die SQL-Fehlermeldung ansehen
[link:http://de2.php.net/manual/en/mysqli.error.php]
while($zeile = $ergebnis->fetch_assoc())
{
...etwas tun
);
...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
![](http://selfhtml.bitworks.de/Virencheck.gif)
--
☻\_
/▌
/ \ Nur selber lernen macht schlau
<http://bergpost.annerschbarrich.de>