База данных (книжный стол)
Цена серийного номера
0001 10,00
0001 30,00
0002 15.00
0003 (A) 9,00
0004 (B) 5,00
0005 3,00
Код
$serialID = array("0001","0002","0003","0004","0005"); //DB Connection for($i = 0; $i < count($serialID); $i++) { $q = "select serial from book where serial like \"$serialID[$i]\" limit 1"; $r = mysqli_query($dbc, $q); } while($row = mysqli_fetch_array($r, MYSQLI_ASSOC) { echo $row['serial'].'<br />'; }
Из моего кода я могу получить только последний serialID. Как получить каждый serialID в $row
?
Вы можете использовать это вместо этого:
$q = "select serial from book where serial like '%" . implode($serialID, "%' OR serial LIKE '%") . "%'"; $r = mysqli_query($dbc, $q); while($row = mysqli_fetch_array($r, MYSQLI_ASSOC) echo $row['serial'].'<br />';
В вашем цикле for
вы SELECT
все строки, но только последний экземпляр сохраняется в переменной (в последней итерации цикла for
), поэтому вы выбираете только его в цикле while.
PS Вы также можете это обработать, поставив цикл while в конец цикла for
, но код выше просто не громоздкий.
Изменить: вы всегда переопределяете оператор select в цикле for, прежде чем запрашивать его. Таким образом выполняется только последний запрос с последним серийным
я надеюсь, что вы сделали ошибку, что в запросе вы сохранили лимит 1, так что это причина, по которой вы получаете только последнюю запись
for($i = 0; $i < count($serialID); $i++) { $sql=select serial from book where serial like \"$serialID[$i]\" $r = mysqli_query($sql); } while($row = mysqli_fetch_array($r) { echo $row['serial'].'<br />'; }
$serialID = array("0001","0002","0003","0004","0005"); //DB Connection foreach($serialID as $serial){ $q = "select serial from book where serial like '%".$serial."%' limit 1"; $r = mysqli_query($dbc, $q); while($row = mysqli_fetch_array($r, MYSQLI_ASSOC) echo $row['serial'].'<br/>'; }
for($i = 0; $i < count($serialID); $i++) { $r = mysqli_query($sql); $sql=select serial from book where serial like "$serialID[$i]" } while($row = mysqli_fetch_array($r) { echo $row['serial'].'<br />'; }