Foros del Web » Programando para Internet » PHP »

Obtener resultado de una consulta sql

Estas en el tema de Obtener resultado de una consulta sql en el foro de PHP en Foros del Web. Hola buenas de nuevo, Quisiera saber como puedo hacer para tener una funcion que podría llamarse "query" y que independientemente del tipo de consulta que ...
  #1 (permalink)  
Antiguo 15/07/2010, 02:47
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Obtener resultado de una consulta sql

Hola buenas de nuevo,

Quisiera saber como puedo hacer para tener una funcion que podría llamarse "query" y que independientemente del tipo de consulta que haga, esta me devuelva un resultado limpio, por ejemplo, de la siguiente manera:

Código PHP:
$clientes query('SELECT * FROM Clientes'); 
y que $clientes sea igual a un array limpio procesado por ejemplo con mysql_fetch_array();

Código PHP:
$numclientes query(SELECT COUNT(*) FROM Clientes); 
y que $numclientes sea igual a 2.

Código PHP:
$updateClientes query('update... etc'); 
$updateCLientes = true / 1

No se si me entendéis el concepto, no puedo hacer un mysql_fetch_array a un count o a un update pero si a un select, y quería saber como podría hacerlo todo en una función si es posible.

Muchas gracias y un saludo!
  #2 (permalink)  
Antiguo 15/07/2010, 05:40
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Obtener resultado de una consulta sql

Solo necesitas crear una función llamada query y pasas los parametros como deseas dentro creas la forma de consulta. Algo así
Código PHP:
Ver original
  1. function query($sql){
  2.     $conn = mysql_connect('HOST', 'USUARIO', 'CONTRASEÑA') or die(mysql_error());
  3.     mysql_select_db('base_de_datos',$conn);
  4.     $result = mysql_query($sql) or die(mysql_error());
  5.     $array = array();
  6.     while($row = mysql_fetch_array($result)){
  7.         $array[] = $row;
  8.     }
  9.     return $array;
  10. }
  11. $row = query('SELECT * FROM tabla');
  12. var_dump($row);
Eso devolverá un array y tú lo manejarás como desees
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 15/07/2010, 05:53
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Obtener resultado de una consulta sql

No... eso no sirve

Si haces un update por ejemplo te devolverá un error para mysql_fetch_array..

Por eso planteo este problema, para un select si que no hay problemas...

Un saludo y gracias por tu ayuda!
  #4 (permalink)  
Antiguo 15/07/2010, 05:57
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: Obtener resultado de una consulta sql

Tomando como modelo la funcion de abimaelrc:
Código PHP:
function query($sql){
$tipo_sql explode(" ",$sql);
if(
$tipo_sql=='select'){

}elseif(
$tipo_sql=='update'){

}elseif(...

}
$row query('SELECT * FROM tabla');
var_dump($row); 
EDIT: Ten cuidado con mayusculas y minusculas.
  #5 (permalink)  
Antiguo 15/07/2010, 06:00
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Obtener resultado de una consulta sql

Ese ejemplo es correcto pero pensaba que se podría hacer de una manera más limpia.... No me gusta tener que hacer ese proceso..

por cierto, para solucionar el tema de las mayúsculas se le puede pasar la sql en mayúsculas solo para el filtrado y colocar los filtros en mayúsculas también, así no hay problema.

Alguna otra opción?

Muchas gracias por las respuestas! Un saludo!
  #6 (permalink)  
Antiguo 15/07/2010, 06:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Obtener resultado de una consulta sql

Aun puedes, lo que debes hacer es ingresar alguna condición para que haga lo que quieras. Solo es cuestión de imaginación. Ejemplo
Código PHP:
Ver original
  1. function query($sql){
  2.     $sql = trim($sql);
  3.     $conn = mysql_connect('HOST', 'USUARIO', 'CONTRASEÑA') or die(mysql_error());
  4.     mysql_select_db('base_de_datos',$conn);
  5.     $result = mysql_query($sql) or die(mysql_error());
  6.     if(preg_match('/^select/i',$sql)){
  7.         $array = array();
  8.         while($row = mysql_fetch_array($result)){
  9.             $array[] = $row;
  10.         }
  11.         return $array;
  12.     }
  13. }
  14. $row = query('SELECT * FROM tabla');
  15. var_dump($row);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 15/07/2010, 06:08
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Obtener resultado de una consulta sql

Claro.. lo que pasa es que a la hora de mostrar los resultados, habría que cambiar el método, es decir no se puede usar un foreach si no devuelve un array en el caso de un update...

Como se puede hacer para que un update devuelva true en el caso de que ese registro se actual¡ce? un update siempre se hará, aunque eso no quiera decir que el registro se haya actualizado.. Creo que no se puede hacer de manera limpia lo que quiero hacer..


Muchas gracias por vuestra ayuda!!

un saludo!!
  #8 (permalink)  
Antiguo 15/07/2010, 06:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Obtener resultado de una consulta sql

Para eso coloca un else y usa mysql_effected_rows.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 15/07/2010, 07:02
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Obtener resultado de una consulta sql

Muchas gracias por tu ayuda!!

Un saludo!

Etiquetas: sql, resultados
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 12:30.