Inner join und PDO

Ich habe ein problem mit INNER JOIN und PDO. Meine Abfrage funktioniert Prima, wenn Sie nicht mit INNER JOIN. Beim hinzufügen INNER JOIN der Abfrage nichts zeigt.

Ist dies ein Weg zu gehen, oder bin ich völlig falsch?

Irgendwelche Vorschläge?

public function search($searchterm)
{
    $query = $this->db->prepare("
        SELECT 
            ad.id AS idet,
            ad.lid, 
            ad.firstname AS firstnamer, 
            ad.surname AS surnamer,
            ad.socialnr AS socialnumber,
            ba.class AS classes
        FROM `everybody` ad
        INNER JOIN `students` ba
        ON idet = ba.id
        WHERE (`firstname` LIKE :search OR `surname` LIKE :search OR `classes` LIKE :search)");

    $searchterm = '%' . $searchterm . '%';
    $query->bindParam(':search', $searchterm, PDO::PARAM_STR);

    $query->execute();

    while($row = $query->fetch(PDO::FETCH_ASSOC)) {
      echo $row['idet']. ' : '. $row['firstnamer']. ' '. $row['surnamer']. ' - '. $row['socialnumber']. ' Class: '. $row['classes']. '<br />';
    }

}
  • Keine Ergebnisse zurück von einem INNER JOIN zeigt an, dass die verknüpfte Tabelle hatte keine passenden Zeilen der ON Klausel oder alle Spiele wurden herausgefiltert, die von der WHERE - Klausel. Wenn Sie brauchen zurückgegebenen Zeilen aus der ersten Tabelle, unabhängig von Treffern in der zweiten, müssen Sie eine LEFT JOIN statt.
  • ON idet = ba.id Ihr Zustand nicht entsprechen Ihre Aliase,wo ist ad? Sie müssen ON ad.id = ba.id
  • Haben Sie die Option Ausnahmen für PDO-Fehler?
  • Hängen, obwohl - Sie sind mit emulierten bereitet in PDO? Die :search Platzhalter können nur einmal verwendet werden sonst und würde Fehler verursachen, bei execute() - PDO wird nicht zulassen, Sie wiederverwenden. Sie haben $this->db konfiguriert, um Fehler auslösen? $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  • Auch Sie kann die Wiederverwendung parameter,die Sie benötigen, um $searchterm in 3 verschiedene Variablen und führen mit allen 3
  • Sind Sie sicher, dass die join verwenden sollten id Spalten aus beiden Tabellen? Es scheint ein bisschen selten, normalerweise würde ich erwarten, dass so etwas wie die Schüler.everybody_id Spalte, aber Sie haben Ihre Gründe, es zu behalten.
  • Gelöst. Ich danke Ihnen allen für Ihre Hilfe.

InformationsquelleAutor Per76 | 2015-01-01
Schreibe einen Kommentar