Du kan gøre begge dele, men IN-forespørgslen er meget mere effektiv til dette formål for alle store forespørgsler. Jeg lavede nogle simple tests for længe siden, der afslørede, at det er omkring 10 gange hurtigere at bruge IN-konstruktionen til dette. Hvis du spørger, om syntaksen er korrekt, så ja, det ser fint ud, bortset fra at der mangler semikolon for at fuldføre udsagnet.
REDIGER :Det ser ud til, at det faktiske spørgsmål, du stillede, var "hvorfor returnerer disse forespørgsler kun én værdi". Hvis du ser på prøvekoden, du har sendt, er problemet her:
$fetch = mysql_fetch_assoc($result) or die (mysql_error());
$itemsCollected = $fetch['item_name'];
echo $itemsCollected;
Du skal gå igennem og iterere, indtil der ikke er flere resultater at hente, da Pax påpegede . Se PHP-manualsiden for 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);