Foros del Web » Programando para Internet » PHP »

Duda con MS SQL

Estas en el tema de Duda con MS SQL en el foro de PHP en Foros del Web. COmo puedo saber si mi tabla esta vacía?...
  #1 (permalink)  
Antiguo 19/12/2003, 23:42
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Duda con MS SQL

COmo puedo saber si mi tabla esta vacía?
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 20/12/2003, 08:20
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago de Chile
Mensajes: 18
Antigüedad: 14 años
Puntos: 0
Puedes hacerle un mysql_affected_rows() para devolver el número de filas afectadas en la ultima sentencia INSERT, UPDATE o DELETE y para el número de lineas devueltos por un SELECT, usar mysql_num_rows().

puedes hacer algunas pruebas e ir imprimiendo el resultado de las funciones para que veas que devuelve en cada tipo de sentencia. por ejemplo si haces un DELETE sin WHERE, se eliminan todos los registros y mysql_affected_rows() devuelve 0 pero no significa que no funciono, solo que no hay registros que devolver (obvio).
  #3 (permalink)  
Antiguo 23/12/2003, 09:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo más rápido es hacer una consulta tipo:

SELECT COUNT(*) FROM tabla

El COUNT() de Mysql obtiene un sólo registro con el total de registro de una tabla dada .. así puedes hacer tu condicional para ver si hay = 1 registro o mayor.

Código PHP:
<?
// conecta a tu BD .. seleccionalá ...

$consulta=mysql_query("SELECT COUNT(*) FROM tabla");
$total=mysql_result($consulta,0);

if (
$total 0){
  echo 
"Hay $total registros ...";
} else {
   echo 
"Está vacia la tabla";
}

?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 23/12/2003, 11:19
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago de Chile
Mensajes: 18
Antigüedad: 14 años
Puntos: 0
Por supuesto que count() te puede devolver esa informacion, todo depende de si se quiere ejecutar la funcion directamente sobre la tabla o si lo que se desea es conocer si una instruccion SQL devolvio registros.

seria una practica muy mala si haces un SELECT * FROM tabla y despues un SELECT COUNT(*) FROM tabla.

evidentemente estas consultando 2 veces a la base de datos.

Finalmente mi comentario responde a la duda de saber si una consulta a la tabla devolvio algun dato.
  #5 (permalink)  
Antiguo 23/12/2003, 11:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. rsantos (no te enojes xD, Feliz navidad Jo,Jo Joo.) ..

La pregunta de Reynier es lo suficientemente escueta como para prestarse a varias interpretaciones.

Ya tiene las dos alternativas .. Ahora depende de que quiera hacer: Si presentar esos datos (hacer el SELECT) y contarlos .. o contarlos antes para tomar alguna acción o simplemente contarlos para mostrar esa información del -total- .. así deberá usar una u otra opción.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 23/12/2003, 11:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por cierto jeje:

Cita:
Duda con MS SQL
Se nos pasó ese pequeño detalle .. Que no habla de Mysql sino de MS SQL Server ..

En ese caso .. el SQL equivalente a COUNT() lo desconozco .. y la función PHP equivalente a mysql_num_rows() o mysql_affetch_rows .. sería lo mismo pero con mssql_ en lugar de msyql_ (el uso y resultados el mismo que detalló rsantos).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:40.