2017-01-22 1 views
1

Ich bin ein Anfänger Programmierer und ich versuche, Felder aus verschiedenen Tabellen vor dem Überprüfen der Felder mit WHERE-Klausel in PHP zu wählen. Ich verstehe, dass Menschen in der Regel bekommen Felder aus verschiedenen Tisch wieWie nehme ich Felder aus zwei verschiedenen Tabellen und überprüfe den Wert mit WHERE?

SELECT t1.firstName, t2.lastName 
FROM Table1 t1, Table2 t2 
WHERE (t1.id = t2.id) 

aber ich versuche, für das gleiche Feld verwenden zu tun WHERE-Klausel wie folgt aus:

$myid = $_GET['myid']; 
SELECT t1.firstName, t2.lastName 
FROM Table1 t1, Table2 t2 
WHERE (t1.id = t2.id AND id = $myid) 

Was ich wirklich will t1.id = t2.id = $myid für meine Where-Klausel, aber das gibt mir Fehler. Unten ist mein Satz von Codes:

$result = $conn->query("SELECT ve.vendorname, ve.vendortype, ve.rebatepercentage, 
    ve.vendorimages, ve.details, vo.totalratings, vo.totalno FROM Vendors ve, vendortotalratings vo 
    WHERE ve.vendorid = vo.vendorid AND vendorid = " . $vendorid); 
+0

Hey du bist 100% richtig es funktioniert jetzt –

+0

weitermachen! Ich wähle deine! –

Antwort

1

Sie nicht beide Spalten überprüfen. Wenn Sie join die Felder bestätigen, die Sie übereinstimmen möchten, müssen Sie nur eine der Spalten überprüfen, da beide den gleichen Wert haben.

on t1.id = t2.id 
where t1.id = 2 

würde passen beide wo t1.id = 2 und t2.id = 2.

Zusätzlich beachten Sie, dass eine Benutzereingabe vorbei direkt auf einer SQL-Abfrage auf SQL-Injektionen öffnet. Sie sollten Ihre Abfrage parametrisieren.

$myid = $_GET['myid']; 
SELECT t1.firstName, t2.lastName 
FROM Table1 t1, Table2 t2 
WHERE (t1.id = t2.id AND id = ?) 

dann binden Sie die $myid. Wie Sie binden, hängt von dem PHP-Treiber ab, den Sie verwenden. Mit PDO kann es als Array direkt an die execute übergeben werden.

1

Als user @ chris85 in den Kommentaren,

müssen erwähnt
$result = $conn->query("SELECT ve.vendorname, ve.vendortype, ve.rebatepercentage, 
    ve.vendorimages, ve.details, vo.totalratings, vo.totalno FROM Vendors ve, vendortotalratings vo 
    WHERE ve.vendorid = vo.vendorid AND ve.vendorid = " . $vendorid); 
Verwandte Themen