Volver a la página principal
martes 11 febrero 2025
4

Solución del error odbc_fetch_array() expects parameter 1 to be resource en PHP

El error "odbc_fetch_array() expects parameter 1 to be resource" ocurre cuando la función odbc_fetch_array() recibe un valor no válido en lugar de un recurso de consulta ODBC. Esto suele deberse a un fallo en la ejecución de la consulta SQL.

Causas y solución

1. Verificar si la consulta se ejecutó correctamente

El problema generalmente ocurre cuando odbc_exec() falla y devuelve false en lugar de un recurso válido. Para solucionarlo, asegúrate de que la consulta es correcta y que la conexión a la base de datos está establecida correctamente.

// Conectar a la base de datos
$conexion = odbc_connect("DSN", "usuario", "contraseña");

if (!$conexion) {
    die("Error de conexión: " . odbc_errormsg());
}

// Ejecutar la consulta
$sql = "SELECT * FROM usuarios";
$resultado = odbc_exec($conexion, $sql);

if (!$resultado) {
    die("Error en la consulta: " . odbc_errormsg($conexion));
}

// Obtener los datos
while ($fila = odbc_fetch_array($resultado)) {
    print_r($fila);
}

2. Confirmar que la conexión ODBC es válida

Si la conexión ODBC no está configurada correctamente en el sistema, odbc_connect() puede fallar. Revisa que el DSN esté bien configurado en el ODBC Data Source Administrator (Windows) o en /etc/odbc.ini (Linux).

3. Comprobar la sintaxis de la consulta

Errores en la consulta SQL pueden hacer que odbc_exec() falle. Verifica la sintaxis de tu consulta probándola directamente en la base de datos antes de ejecutarla en PHP.

4. Revisar permisos y configuración de la base de datos

Si la consulta parece correcta pero sigue fallando, revisa los permisos del usuario en la base de datos y la configuración del servidor.

Ejemplo corregido

Aquí tienes una versión mejorada con un manejo adecuado de errores:

$dsn = "mi_dsn";
$user = "mi_usuario";
$password = "mi_contraseña";

$conexion = odbc_connect($dsn, $user, $password);
if (!$conexion) {
    die("Error de conexión ODBC: " . odbc_errormsg());
}

$sql = "SELECT * FROM usuarios";
$resultado = odbc_exec($conexion, $sql);

if (!$resultado) {
    die("Error en la consulta SQL: " . odbc_errormsg($conexion));
}

while ($fila = odbc_fetch_array($resultado)) {
    echo "Usuario: " . $fila['nombre'] . "<br>";
}

odbc_close($conexion);
Etiquetas:
php
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer