Utilice & # 8220; mysql_fetch_row & # 8221; recuperar resultados de la base de datos e insertarlos en una matriz usando PHP y mysqli?

StackOverflow https://stackoverflow.com/questions/627036

Pregunta

Necesito recuperar datos de varias filas y luego insertar los resultados en una matriz enumerada para poder usar un " para " bucle para hacer eco ...

Tengo esto (ya me conecté a la base de datos):

$genres_sql = 'SELECT genreID FROM genres WHERE imdbID = ?';
if ($stmt->prepare($genres_sql)) {
    // bind the query parameters
    $stmt->bind_param('i', $movieid);
    // bind the results to variables
    $stmt->bind_result($genre);
    // execute the query
    $stmt->execute();
    $stmt->fetch();
}

Aquí obtengo el primer resultado (fila) en una variable. Pero necesito insertarlo en una matriz enumerada para poder hacer eco de cada resultado usando esto:

if (!empty($genre)) {
for ($i = 0; $i + 1 < count($genre); $i++)
{
    echo $genre[$i].', '; 
}
echo $genre[$i];
}

Esto hará eco: $ genere [0], $ genere [1], $ genere [2], y así sucesivamente hasta el último.

Sé que mysql_fetch_row puede hacer el trabajo, pero soy nuevo en programación así que necesito una explicación muy detallada. ¡Gracias!

¿Fue útil?

Solución

Puede realizar un bucle utilizando el método MySQLi_Statement :: fetch :

$stmt->bind_result($genre);
$stmt->execute();
$genres = array();
while ($stmt->fetch()) {
    $genres[] = $genre;
}

Básicamente, fetch proporciona un iterador que while puede usar para iterar a través de cada resultado. Las variables en bind_result (en este caso $ genere ) se reasignan con cada iteración.

Otros consejos

No estoy 100% familiarizado con mysqli, pero he jugado con muchos comandos pgsql haciendo este tipo de cosas y creo que lo que estás buscando es mysqli-result- > fetch_assoc . Esto producirá una matriz asociativa que puede recorrer con bastante facilidad de esta manera:

while ($row = $result->fetch_assoc()) {
    printf ($row["genre"]);
}

EDITAR: Alnitak se ha vinculado a una mejor explicación que la que tengo en los comentarios para esto respuesta.

Esta no es realmente una respuesta a la pregunta, pero si desea imprimir una matriz como una lista separada por comas, es mejor usar comando implode que un bucle for:

//Replaces the for loop in the question
echo implode(', ', $genre);

... excepto que no hay coma después del último elemento.

Solo para completar la respuesta de @Mykroft, si realmente solo desea una matriz enumerada, simplemente use $ result- > fetch_array (MYSQLI_NUM), aunque una matriz asociativa es mucho más fácil de usar en la mayoría de las situaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top