Avatar ·

Error «Invalid argument supplied for foreach()»: causas y cómo solucionarlo

¡Hola a todos! Soy nuevo en PHP y estoy escribiendo un script simple para mostrar una lista de usuarios. Tengo una función que obtiene datos de la base de datos y los devuelve como un array. Cuando intento iterar el resultado con foreach, recibo el error:
Warning: Invalid argument supplied for foreach() in /var/www/test.php on line 15
Aquí está mi código:
function getUsers() {
    $result = mysql_query("SELECT * FROM users");
    return $result; // Pensé que esto era un array
}

$users = getUsers();
foreach ($users as $user) {
    echo $user['name'] . '
'; }
Esperaba que $users contuviera un array de filas de la tabla, pero en su lugar recibo un error. ¿Podrían decirme qué estoy haciendo mal? ¿Cómo organizar correctamente la iteración del resultado de la consulta? ¡Gracias de antemano! <<>>

Por qué ocurre el error

El error «Invalid argument supplied for foreach()» ocurre cuando intentas pasar a la construcción foreach una variable que no es un array ni un objeto iterable. En tu caso, mysql_query() devuelve un resource, no un array. Para obtener los datos como un array, debes usar funciones como mysql_fetch_assoc() dentro de un bucle while.