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 derON
Klausel oder alle Spiele wurden herausgefiltert, die von derWHERE
- Klausel. Wenn Sie brauchen zurückgegebenen Zeilen aus der ersten Tabelle, unabhängig von Treffern in der zweiten, müssen Sie eineLEFT JOIN
statt. ON idet = ba.id
Ihr Zustand nicht entsprechen Ihre Aliase,wo istad
? Sie müssenON 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, beiexecute()
- 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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden, einen Spaltenalias in
ON
oderWHERE
. Es sollteFalls es andere SQL-Fehler, die Sie aktivieren sollten, PDO Ausnahmen:
Versuchen, durch ändern
ad.id
stattad.idet
Danke Euch allen für Eure Hilfe.
Ja habe ich aktiviert, die Ausnahmen für die PDO-Fehler. Kein Fehler registriert. Ich habe versucht, Ihre Anregungen, wie oben gepostet. Nichts funktioniert.
Wenn Sie nicht mit INNER JOIN, dieser code funktioniert wie ein Charme:
Den Unterschied zwischen dem code in meinem ersten post und diesem, ist das fehlen der INNEREN VERKNÜPFUNG. Ich hoffe, es wird helfen, alle ein, mir zu helfen zu verstehen, warum.
Ist das der richtige Ansatz? Muss ich überdenken diese neu zu schreiben und meine Funktion? Bitte um Rat in jeder Richtung zu helfen mich auf die richtige Spur. Sie sind sehr hilfreich. Danke.