Je me demande simplement quel type de commande mysql je pourrais exécuter en php pour sélectionner tous les éléments d'une certaine table où columna n'est pas égal à x et columnb n'est pas égal à x
Quelque chose comme: select something from table where columna does not equal x and columnb does not equal x
Des idées?
La clé est la requête SQL, que vous allez configurer en tant que chaîne:
$sqlquery = "SELECT field1, field2 FROM table WHERE NOT columnA = 'x' AND NOT columbB = 'y'";
Notez qu'il existe de nombreuses façons de spécifier NOT. Un autre qui fonctionne aussi bien est:
$sqlquery = "SELECT field1, field2 FROM table WHERE columnA != 'x' AND columbB != 'y'";
Voici un exemple complet d'utilisation:
$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
}
Vous pouvez faire ce que vous voulez dans la boucle while tout en haut. Accédez à chaque champ de la table en tant qu'élément du $row array
ce qui signifie que $row['field1']
vous donnera la valeur pour field1
sur la ligne en cours, et $row['field2']
vous donnera la valeur pour field2
.
Notez que si la ou les colonnes peuvent avoir la valeur NULL
, celles-ci ne seront pas trouvées à l’aide de l’une ou l’autre des syntaxes ci-dessus. Vous devrez ajouter des clauses pour inclure NULL
valeurs:
$sqlquery = "SELECT field1, field2 FROM table WHERE (NOT columnA = 'x' OR columnA IS NULL) AND (NOT columbB = 'y' OR columnB IS NULL)";
Vous pouvez utiliser comme
NOT columnA = 'x'
Ou
columnA != 'x'
Ou
columnA <> 'x'
Et comme la requête de Jeffly Bake, pour inclure des valeurs nulles, vous n'avez pas à écrire comme
(NOT columnA = 'x' OR columnA IS NULL)
Vous pouvez faire simple en
Not columnA <=> 'x'
<=> est le coffre fort égal à l'opérateur, qui inclut les résultats de même des valeurs nulles.
Ou peut également insérer la déclaration à l'intérieur du crochet.
SELECT * FROM tablename WHERE NOT (columnA = 'x')
$sqlquery = "SELECT field1, field2 FROM table WHERE columnA <> 'x' AND columbB <> 'y'";
Je suggérerais d'utiliser l'opérateur de diamant (<>) en faveur de! =, Car le premier correspond au code SQL valide et le second à un ajout à MySQL.
select * from table where fiels1 NOT LIKE 'x' AND field2 NOT LIKE 'y'
// ce travail de manière insensible à la casse