Foros del Web » Programando para Internet » PHP »

diferenciar si consulta SQL devuelve filas o no

Estas en el tema de diferenciar si consulta SQL devuelve filas o no en el foro de PHP en Foros del Web. lo que necesito hacer es un a funcion que retorne diferentes casos: si es select correcto con 1 o mas filas de resultado: - retornar ...
  #1 (permalink)  
Antiguo 10/01/2005, 15:06
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
diferenciar si consulta SQL devuelve filas o no

lo que necesito hacer es un a funcion que retorne diferentes casos:

si es select correcto con 1 o mas filas de resultado:

- retornar un array asociativo (dp puedo evolucionarlo para que retorne diferentes tipos de arrays)
- agregar cuantas filas se afectaron a una propiedad ya definida.

si es select que no retorna filas:
- retornar null
- filas afectadas = 0

si es otro tipo de consulta, como update, delete, insert:
- retornar true/false
- agregar filas afectadas

el problema no son las condiciones sino, como identifico si la consulta es un select o no, para devolver el array, o true, o false o null dependiendo del caso

(estoy usando mysql)
  #2 (permalink)  
Antiguo 10/01/2005, 15:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Con expresiones regulares puedes buscar la "cadena" SELECT o INSERT O UPDATE en tu sentencia SQL .. pues recuerda que para ese punto no es más que una cadena (string) para PHP y además tiene un formato definido (el de la sintax de esas sentencias SQL) ..

Un saludo,
  #3 (permalink)  
Antiguo 11/01/2005, 11:48
Avatar de ArrauKano  
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 664
Antigüedad: 21 años, 5 meses
Puntos: 4
pero existen consultas q devuelven filas q no son SELECT, o q no llevan el formato sql standar, por eso las expresiones regulares no me sirven, yo creo q + va por detectar el identificador de recurso del resultado de la consulta, si son filas, entonces devolver array, si no hay filas, devolver un null si no hubieron filas afectadas, devolver true si se afectaron filas
  #4 (permalink)  
Antiguo 11/01/2005, 12:08
Avatar de Covids0020  
Fecha de Ingreso: septiembre-2003
Ubicación: España
Mensajes: 217
Antigüedad: 20 años, 6 meses
Puntos: 1
Comoorrr??, no entiendo muy bien lo que quieres pero... no sé, una consulta de selección, en PHP, el string pasado a mysql_query() siempre va a contener "SELECT" ggg, bueno, que digo?, siempre de siempre, como te ha comentado Cluster... ¿qué problema tienes con eso???.
if (eregi("SELECT",$consulta))
{
// chequear consulta de selección
// como tú prefieras
}
elseif (eregi("UPDATE",$consulta))
{
// chequear consulta de Actualización
// como tú prefieras
}
o incluso con un switch, solo deberias pasar el string de la consulta.
Ya despues puedes usar mysql_num_rows, mysql_affected_rows...
Perdona pero es que no entiendo la complejidad de lo que buscas ;] , un saludo.
__________________
"La sabiduría comienza donde acaba el conocimiento". Yaris.
http://www.culturadigital.org
  #5 (permalink)  
Antiguo 11/01/2005, 13:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por ArrauKano
pero existen consultas q devuelven filas q no son SELECT, o q no llevan el formato sql standar, por eso las expresiones regulares no me sirven, yo creo q + va por detectar el identificador de recurso del resultado de la consulta, si son filas, entonces devolver array, si no hay filas, devolver un null si no hubieron filas afectadas, devolver true si se afectaron filas
Bueno .. si, tienes cosas como SHOW y otros comandos que devuelven filas .. pero para eso ya te he comentado .. el "SQL" es un lenguaje "cerrado" tendrá X posibilidades así que "jugando" con expresiones regulares podrías cubrir todo el margen. (no son tantos comandos "básicos" de ese estilo).

Pero .. con mysql_affected_rows() puedes ver cuantos registros fueron "afectados" por tu cosulta realizada .. y con mysql_num_rows() peudes ver los que se obtienen (de un SELECT por ejemplo). Supongo que con esas funciones podrás hacer lo que pretendes.

Estas funciones tienen sus detalles sobre como funcionan .. revisa la documentación oficial de PHP al respecto:

www.php.net/mysql

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.
Respuesta




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