Como acceder a varias filas en SQL desde php

Cuando hago una consulta a una tabla en la que me salen como resultado dos filas por ejemplo:

$sql= "SELECT id, nombre, apellido FROM usuarios WHERE nombre = 'Juan'";
$res = $db->query($sql) or die("error: ".$sql);
$row = $res->fetch_assoc();

y me sale este resultado;

id: 1 nombre: Juan apellido: Rodriguez
id: 5 nombre: Juan apellido: Herrero
id: 8 nombre: Juan apellido: Fuentes

Como puedo acceder a todos esos datos desde php? porque solo puedo acceder al primer registro usando $row['id'] $row['nombre'] $row['apellido']

0
задан 15.12.2016, 14:06
2 ответа

Твоя переменная $row сохраняет ВСЕ результаты, что ты был бы должен делать, так это что-либо подобное:

$res = $db->query($sql) or die("error: ".$sql);
$results = array();
while($row = mysql_fetch_assoc($res)) {
   $results[] = $row;
}

И чтобы получать все данные

foreach ($results as $result){
   print_r($result['id']);
   print_r($result['nombre']);
}

, Как ты хочешь согласиться через "индекс" на твой objecto, было бы достаточно этого:

$array_final = array();
foreach ($results as $result){
   $array_final[] = $result;
}

for ($i=0; $i < count($array_final); $i++) { 
   print_r($array_final[$i]['nombre']);
}
4
ответ дан 24.11.2019, 12:04

В действительности возможно доставать данные с resulset:

$res = $db->query($sql) or die("error: ".$sql);
$results = array();
while($row = mysql_fetch_assoc($res)) {
   print_r($row['id']);
   print_r($row['nombre']);
}

, Если ты только прочитаешь данные однажды, я думаю, что он таким образом может подавать тебя, взамен, если ты хочешь прочитать несколько раз результат select, он лучше, как он говорит compaГ±ero @sioesi.

TambiГ©n ResulSet могут resetear с mysqli_data_seek($res, 0); mysqli_data_seek

1
ответ дан 24.11.2019, 12:04
  • 1
    Нет никакого способа seprarlo в array " bidimenisonal" такой, что así: $miarray[1]['apellido'] и $miarray[2]['apellido']? –  Pavlo B. 15.12.2016, 16:49
  • 2
    @PavloB. я издам мой respiuesta, чтобы получать то, что ты хочешь –  sioesi 15.12.2016, 17:41