当多个指数存在时,For-Each循环错过第一个索引

I've got the below PHP which works great when the array of locations only have 1 value, but when it has any number more than 1, the information on the first location keeps printing out blank. The array is set by calling explode on a comma-delimited list. When I set the array manually immediately before the loop, it works great! Yet not when I use explode, even though I printed the array and can confirm it's getting set up just as I expect (with the correct 0 index). The code I have is:

echo "<ul>";
foreach ($locations as &$value) 
{
    $locationDetails = mysql_query("SELECT id, name FROM locations WHERE id='$value'");
    $locationDetailRow = mysql_fetch_assoc($locationDetails);

    echo "<li>".$locationDetailRow['name']."</li>";
}
unset($value);
echo "</ul>";

I've confirmed that the query does not fail, that $value is what I expect it to be, and that the name does exist for the first $value in every case.

Any reason this should be failing on the first case when there are multiple locations?