2016-05-06 5 views
0

Dies ist mein erstes Mal mit einem inneren Join, so dass ich sehr verwirrt bin.SQL Inner Join erhält alle Daten in Spalte

Ich habe zwei Tabellen.

First one it: (I've blanked out details)

Dies ist meine erste Tabelle Mitglieder

enter image description here

genannt Dies ist meine andere Tabelle namens Spenden. Die Benutzer-ID der Mitglieder ist mit der Benutzer-ID der Spendentabelle verknüpft.

Richtig so, was ich versuche zu tun ist, wählen Sie alle Daten von Mitgliedern und von der Spenden Tabelle und assiotate jede ID mit der Spende Betrag. Also, was ich versuche zu tun ist, alle Namen zusammen mit ihrer Spende Betrag Echo, wenn das Sinn macht.

Das ist mein Code im Moment ist

$ verbinden - enthält meine Config

//Connection info. 
    global $connect; 


    //inner join 
    $sql = "SELECT members.firstname, members.lastname 
    FROM members INNER JOIN donations ON members.userID = donations.userID WHERE donations.amount !='' ORDER BY members.userID ASC "; 

    $result = mysqli_query($connect, $sql); 


    while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 

    $list .= $row["firstname"]; 
    echo $list; 
} 

ich diesen Fehler zurück: mysqli_fetch_array() erwartet 1 Parameter boolean

werden MySQLi_Result UPDATE: Vielen Dank für Ihre Hilfe, ich führe die SQL-Abfrage und nur den Vor- und Nachnamen zurück.

Ich denke, ich mache hier etwas falsch! = '' Die Spende Betrag ist ein Dezimal bin ich zielen richtig?

+0

Sie members.fisrname haben, haben Sie Fehler in Spaltennamen verwenden members.firstname in Ihrer Abfrage, wie ich Ihre databse Tabelle – Poria

+0

Vielen Dank für Ihre Antwort feste Rechtschreibung zu sehen. Immer noch Fehler wird der Fehler durch SQL verursacht – Ryan

+0

Drucken Sie Ihre Abfrage und versuchen Sie es direkt in phpmyadmin und sehen, ob es funktioniert – Poria

Antwort

0

Ersetzen Sie members.id durch members.userID in Ihrer Abfrage.

SELECT members.firstname, members.lastname, donations.amount 
FROM members 
INNER JOIN donations ON members.userID = donations.userID 
WHERE donations.amount != '' 
ORDER BY members.userID ASC 

Wie für die SQL-Fehler, dann ist es, weil $ result false ist, wenn ein Problem mit der Abfrage gibt es oder kein Ergebnis gefunden wurde.

mysqli_fetch_array() erwartet 1 Parameter boolean

Um den Fehler zu vermeiden, fügen Sie eine einfache, wenn Fall, weil Ihr während MySQLi_Result werden.

if($result){ 
    while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){ 
     $list .= $row["firstname"]; 
     echo $list; 
    } 
} 
+0

Vielen Dank für die Antwort, bitte können Sie sich meinen aktualisierten Code ansehen? – Ryan

+0

Funktioniert es jetzt? –

+0

Ich bekomme nur den Vor- und Nachnamen zurück. Ich denke, dass ich den Spendenbetrag falsch anspreche? Es ist eine Dezimalstelle – Ryan

1

Sie haben einen Tippfehler im Spaltennamen 'fisrname' => 'Vorname'. Überprüfen Sie die Abfrage zuerst in phpmyadmin oder dem anderen Tool. Lesen Sie auch über mysqli_error und später über andere Möglichkeiten des Zugriffs auf die DB (wie PDO, Doctrine etc.).

+0

danke für Ihre Antwort feste Schreibweise, aber immer noch ting Fehler. – Ryan

+0

Wie ich schrieb, überprüfen Sie Handbuch für mysqli_error – rogers