Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment sélectionner plusieurs enregistrements (ligne) d'une colonne dans mysql ?

Vous pouvez faire l'un ou l'autre, mais la requête IN est beaucoup plus efficace à cette fin pour toutes les requêtes volumineuses. J'ai fait quelques tests simples il y a longtemps qui ont révélé qu'il est environ 10 fois plus rapide d'utiliser la construction IN pour cela. Si vous demandez si la syntaxe est correcte, alors oui, elle semble correcte, à part les points-virgules manquants pour compléter l'instruction.

MODIFIER :Il semble que la question que vous posiez était "pourquoi ces requêtes ne renvoient-elles qu'une seule valeur". Eh bien, en regardant l'exemple de code que vous avez posté, le problème est ici :

$fetch = mysql_fetch_assoc($result) or die (mysql_error());
$itemsCollected = $fetch['item_name'];
echo $itemsCollected;

Vous devez parcourir et itérer jusqu'à ce qu'il n'y ait plus de résultats à récupérer, comme Pax souligné . Voir la page de manuel PHP pour mysql_fetch_assoc :

$sql = "SELECT item_name from items WHERE item_id IN('s001','a012')";
$result = mysql_query($sql);

if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}

if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}

// While a row of data exists, put that row in $row as an associative array
// Note: If you're expecting just one row, no need to use a loop
// Note: If you put extract($row); inside the following loop, you'll
//       then create $userid, $fullname, and $userstatus
while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}

mysql_free_result($result);