2010-07-20 3 views
37

Ich frage mich nur, welche Art von mysql Befehl ich in PHP ausführen könnte, würde alle Elemente aus einer bestimmten Tabelle, wo Spalte nicht gleich x und Spalte ist nicht gleich xWählen Sie aus wo Feld nicht gleich Mysql Php

Etwas wie: select something from table where columna does not equal x and columnb does not equal x

Irgendwelche Ideen?

Antwort

60

Der Schlüssel ist die SQL-Abfrage, die Sie als String aufgebaut wird:

$sqlquery = "SELECT field1, field2 FROM table WHERE NOT columnA = 'x' AND NOT columbB = 'y'"; 

Beachten Sie, dass es viele Möglichkeiten gibt, nicht angeben. Eine andere, die genauso gut funktioniert, ist:

$sqlquery = "SELECT field1, field2 FROM table WHERE columnA != 'x' AND columbB != 'y'"; 

Hier ist ein vollständiges Beispiel dafür, wie es zu benutzen:

$link = mysql_connect($dbHost,$dbUser,$dbPass) or die("Unable to connect to database"); 
mysql_select_db("$dbName") or die("Unable to select database $dbName"); 
$sqlquery = "SELECT field1, field2 FROM table WHERE NOT columnA = 'x' AND NOT columbB = 'y'"; 
$result=mysql_query($sqlquery); 

while ($row = mysql_fetch_assoc($result) { 
//do stuff 
} 

Sie können, was tun Sie in der obigen while-Schleife möchten. Greifen Sie auf jedes Feld der Tabelle als Element der $row array zu, was bedeutet, dass $row['field1'] Ihnen den Wert für field1 in der aktuellen Zeile gibt und $row['field2'] Ihnen den Wert für field2 gibt.

Beachten Sie, dass, wenn die Spalte (n) NULL Werte haben könnten, diese mit keiner der obigen Syntax gefunden werden. Sie müssen Klauseln hinzufügen NULL Werte enthalten:

$sqlquery = "SELECT field1, field2 FROM table WHERE (NOT columnA = 'x' OR columnA IS NULL) AND (NOT columbB = 'y' OR columnB IS NULL)"; 
+4

Ich bin froh zu helfen. Ich begann mit dem Codeblock als Beispiel ... und dann editierte ich 10 mal, während ich weiter speicherte, nur um zu denken: "Warte, ich könnte noch etwas hinzufügen, um es so viel klarer zu machen" –

+0

keiner von beiden scheint zu funktionieren wenn der Standardwert der Spalte "NULL" ist – SpYk3HH

+0

@ SpYk3HH Guter Punkt. Ich werde das ansprechen. –

-1

Sie können auch unempfindlich Weise

select * from tablename where column1 ='a' and column2!='b'; 

1
select * from table where fiels1 NOT LIKE 'x' AND field2 NOT LIKE 'y' 

// diese Arbeit verwenden, falls

0
$sqlquery = "SELECT field1, field2 FROM table WHERE columnA <> 'x' AND columbB <> 'y'"; 

Ich würde vorschlagen, den Diamantoperator (<>) zugunsten von! = Zu verwenden, da der erste gültige SQL ist und der zweite ein MySQL-Zusatz ist.

6

Sie können verwenden wie

NOT columnA = 'x' 

Oder

columnA != 'x' 

Oder

columnA <> 'x' 

Und wie Jeffly Bakes Abfrage für NULL-Werte einschließlich, die Sie nicht wie schreiben müssen

(NOT columnA = 'x' OR columnA IS NULL) 

Sie können es einfach machen, indem

Not columnA <=> 'x' 

< => ist die Null Sicher gleich Operator, die Ergebnisse von selbst Null-Werte enthält.

0

Oder kann auch die Anweisung innerhalb der Klammer einfügen.

SELECT * FROM tablename WHERE NOT (columnA = 'x')