Foros del Web » Programando para Internet » PHP »

odbc_num_rows

Estas en el tema de odbc_num_rows en el foro de PHP en Foros del Web. Buenas, A ver si alguien es tan amable de explicarme esto. Teóricamente para saber si hay resultados devueltos (y cuántos) por una consulta a una ...
  #1 (permalink)  
Antiguo 02/07/2005, 15:20
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
odbc_num_rows

Buenas,

A ver si alguien es tan amable de explicarme esto.

Teóricamente para saber si hay resultados devueltos (y cuántos) por una consulta a una bd access mediante ODBC existe odbc_num_rows

Hasta ahí llego.

Ahora bien, realizo yo mi consulta que sé que devuelve resultados y siempre siempre me devuelve -1


por ejemplo esto

Código PHP:
$conexion odbc_connect("elDSN","","elPassword");
$rs odbc_exec($conexion,"SELECT * from usuarios where Usuario='1'");
$reg odbc_fetch_array($rs);
echo 
odbc_num_rows($rs);
echo 
$reg["nombre"]; 
me devuelve -1Ramon

¿me explica alguien por qué si encuentra un registro me devuelve -1 el número de filas?

Si le saco el where a la sentencia sql

SELECT * from usuarios

y devuelve todos los registros odbc_num_rows me sigue devolviendo -1

contra mySQL me funciona de coña mysql_num_rows me devuelve siempre el número de registros devueltos pero con odbc me está dando por el saco.

¿Alguien sabe qué pasa?
  #2 (permalink)  
Antiguo 02/07/2005, 15:24
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
... me olvidaba, estoy usando PHP Version 4.3.7 con un IIS 5.0 bajo win2000server
  #3 (permalink)  
Antiguo 02/07/2005, 16:25
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 13 años
Puntos: 7
Ese comportamiento está documentado en http://www.php.net/odbc_num_rows, para iterar sobre los datos no te bases en eso, sino en el valor que te puedan devolver las funciones odbc_fetch_*

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #4 (permalink)  
Antiguo 03/07/2005, 01:44
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Gracias xknown pero yá me he inflado a leer el link que dejas antes de postear y precisamente como no lo entiendo pido que alguien me explique.

Cita:
Para una clausula SELECT esta puede ser el numero de registros permitidos.

Nota: El uso de odbc_num_rows() para determinar el numero de registros permitidos despues de un SELECT devolvera -1.
¿Qué quiere decir lo de los registros permitidos? Yo lo que quiero es que me diga la cantidad de registros devueltos. En realidad quiero saber que no haya devuelto 0 pero si devuelve siempre -1 haya lo que haya pues no lo entiendo

Si yo quiero hacer una paginación cómo la puedo hacer si con odbc me devuelve siempre -1.
  #5 (permalink)  
Antiguo 03/07/2005, 11:54
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 13 años
Puntos: 7
El resultado que se obtenga con odbc_num_rows depende del driver ODBC que se utilize, ya que algunos no soportan esta función (por Ej. el driver ODBC de MySQL si soporta esta función), así que tendrías que usar otras alternativas para obtener el número de resultados (select count(*) talvez).

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #6 (permalink)  
Antiguo 04/07/2005, 07:30
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Entiendo.

Veo entonces que no puedo fiarme del driver que esté corriendo el servidor en donde vaya a correr la aplicación, así que mejor le doy la vuelta por otro lado.

También probé con select count(*) con idéntico resultado (seguía devolviendo -1)

Pues nada, al final manipulé una chapuza que da resultado e incluso me ha servidor para paginar y todo.

xknown, te agradezco mucho tu ayuda

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:51.