Ich habe zwei Tabellen in einer Datenbank, eine davon ist eine Liste von "Gebäuden", die Sie erstellen können. Die andere ist eine Liste von Gebäuden, die von Benutzern erstellt wurden.Wie kann ich Zeilen aus einer Tabelle anzeigen, die sich nicht in einer anderen Tabelle befinden?
Auf einer Seite (cityproduction.php) wird eine Liste der Gebäude angezeigt, die Sie erstellen können. Ich möchte, dass die Gebäude angezeigt werden, die Sie erstellen können, die Sie noch nicht erstellt haben.
Hier ist mein Code:
$sql = "SELECT * FROM [The list of built buildings] WHERE building_owner = '$user'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$variable = $row["building_name"];
}
(...)
$sql = "SELECT * FROM [The list of ALL buildings] WHERE name != '$variable' ORDER BY id asc";
$result = mysqli_query($database,$sql) or die(mysqli_error($database));
while($rws = mysqli_fetch_array($result)){
echo $rws["name"]; (etc.)
Was dies tut, ist nur eines der Gebäude nicht-zeigt, dass der Benutzer aufgebaut hat, nicht alle Sie.
Ich möchte $ Variable zu al ist von all den Gebäuden, die von diesem Benutzer gebaut wurden - ich habe einfach angenommen, dass es als ein Array gespeichert wird, wie kann ich es als ein Array und nicht einen einzelnen Wert haben? – Daniel
'$ variable = array();' vor dem 'while' und innerhalb des 'while's benutzen Sie es als' $ variable [] = $ row [' building_name ']; 'aber danach sollte Ihre zweite Abfrage in einer Schleife sein Um die Abfrage mit jedem Wert Ihres Arrays durchzuführen, könnte in diesem Fall eine 'foreach'-Schleife verwendet werden. –
@DanterNetwork Sie können ein Array in Ihrem String nicht so verwenden. Sie könnten eine CSV-Datei erstellen und sie an eine SQL-Datei "in" übergeben. Dies öffnet Sie jedoch für SQL-Injektionen der zweiten Ebene. – chris85