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.
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);
}
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).
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.
Si la consulta parece correcta pero sigue fallando, revisa los permisos del usuario en la base de datos y la configuración del servidor.
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);
Jorge García
Fullstack developer