Foros del Web » Programando para Internet » PHP »

Tipos de consulta MySQL con PHP

Estas en el tema de Tipos de consulta MySQL con PHP en el foro de PHP en Foros del Web. Buenas buenas... Estoy en aprietos... me llevo muy bien con PHP+MySQL pero no conozco su correcta sintaxis. me pueden decir que tipos de consultas existen ...
  #1 (permalink)  
Antiguo 29/05/2005, 10:54
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 4 meses
Puntos: 2
Pregunta Tipos de consulta MySQL con PHP

Buenas buenas...

Estoy en aprietos... me llevo muy bien con PHP+MySQL pero no conozco su correcta sintaxis.

me pueden decir que tipos de consultas existen y como controlar si tienen contenido o no??

por ejemplo, sea cual sea el tipo de consulta que hago, siempre uso el tipo
Código PHP:
$result=mysql_query("select * from enlaces order by enl_tit",$link);
while(
$row=mysql_fetch_array($result)) {
//muestro resultados

sé que existen otras formas de mostrar por ejemplo un único registro sin necedidad del while, que no conozco, cuando la consulta es del tipo

Código PHP:
$result=mysql_query("select * from enlaces where id_enl = 2",$link); 
alguien me lo podría explicar?? además de incluir el control de error =)

he buscado en el FAQ PHP y nada al respecto encontré

muchas gracias
  #2 (permalink)  
Antiguo 29/05/2005, 11:02
Avatar de living  
Fecha de Ingreso: mayo-2004
Mensajes: 1.266
Antigüedad: 19 años, 11 meses
Puntos: 2
Creo que lo que estás buscando es esto :

http://es.php.net/mysql_result
__________________
¿Te apasiona el mundo del guión? El portal del guión
  #3 (permalink)  
Antiguo 29/05/2005, 11:34
Avatar de Edypu  
Fecha de Ingreso: octubre-2003
Ubicación: La Paz - Bolivia
Mensajes: 394
Antigüedad: 20 años, 6 meses
Puntos: 1
Saludos, esto te va ayudar :)

Código PHP:
 $sql="";
 
$sql="SELECT * FROM enlaces ORDER BY enl_tit";
 
$res=mysql_query($sql);
 
$numeroRegistros=mysql_num_rows($res);
// numeroRegistros << obtienes el valor de valores que encontro en la consulta 
  #4 (permalink)  
Antiguo 29/05/2005, 11:53
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Si vas a leer el resultado de varias columnas, sería mejor que sigas utilizando mysql_fetch_*().
Código PHP:
if($row mysql_fetch_array($result)){ // Bastará con un "if" porque sólo habrá uno
   // Acá puedes acceder directamente a todos las columnas de esa fila desde el array
   
echo $row['campo_1'];
   echo 
$row['campo_2'];
   echo 
$row['campo_3'];
   echo 
$row['campo_4'];
   echo 
$row['campo_5'];

Si lo hicieras con mysql_result(), habrías tenido que hacer 5 llamadas a esa función, lo cual es evidentemente menos eficiente.
Código PHP:
echo mysql_result($result0'campo_1');
echo 
mysql_result($result0'campo_2');
echo 
mysql_result($result0'campo_3');
echo 
mysql_result($result0'campo_4');
echo 
mysql_result($result0'campo_5'); 
Por eso la función mysql_result() es preferible utilizarla en resultados pequeños. Por ejemplo cuando utilizas la función COUNT() de mysql, que generalmente devuelve sólo una celda.

Saludos
  #5 (permalink)  
Antiguo 29/05/2005, 12:06
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 4 meses
Puntos: 2
muchas gracias =)

ahora otras dudas referidas:
en el caso de utilizar un IF es simple, ya que con un
Código PHP:
Else { echo "no se encontraron resultados"; } 
bastará para informarle al usuario que no hay datos en ese registro.

Pero si llegara a utilizar While, cómo puedo hacer que, si no hay resultados, se informe??

de momento utilizo un select count(*) y luego un
Código PHP:
IF ($cant_registros==0) { echo "no se encontraron resultados"; }
ELSE {
While(.. 
bla bla bla) {
//mostrar resultados
}

Hay algo más eficiente o así se debe hacer??

y finalmente, en el caso de que el MySQL tenga nombres de tabla diferentes al del scrip..

$result=mysql_query("select * from mensajes order by ms_fec",$link); //en la tabla ese camo lleva por nombre msg_fec
while($row=mysql_fetch_row($result)){
//mostrar resultado
}

como puedo informarlo, en el browser, mejor que el típico mensaje:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in blabla/ver_mensaje.php on line 13

bueno, muchas muchas gracias
  #6 (permalink)  
Antiguo 29/05/2005, 20:55
 
Fecha de Ingreso: mayo-2005
Mensajes: 72
Antigüedad: 18 años, 10 meses
Puntos: 1
tu query le falta algo...

Código PHP:
$result=mysql_query("select * from mensajes order by ms_fec DESC",$link); 
ASC = ascendiendo
DESC = descendiendo

  #7 (permalink)  
Antiguo 29/05/2005, 21:10
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por nachopro
Pero si llegara a utilizar While, cómo puedo hacer que, si no hay resultados, se informe??
Antes del while haz uso de la función mysql_num_rows()... así haces una sola consulta y te olvidaz del COUNT():
Código PHP:
$consultamysql_query("SELECT * FROM tabla WHERE campo='condicion'");

if(
mysql_num_rows($consulta)>0) {
      while(
$cledamysql_fetch_assoc($consulta)) {
              echo 
"Lo normal....";
      }
} else {
      echo 
"No se encontraron coincidencias";

www.php.net/mysql_num_rows , www.php.net/mysql_fetch_assoc (como alternativa del fetch_array y como ahorro de resursos).

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 30/05/2005, 08:15
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 20 años, 4 meses
Puntos: 2
Gracias

Gracias por ir contestándome.. ahora me surgieron otras dudas que aquí amplío:

Ejemplo 1
Código PHP:
$sql_msg "select * from mensajes where id_msg = $id_msg";
$msg_result mysql_query($sql_msg) or die("Error en <b>$sql_msg</b><br>"mysql_error()); 
Ejemplo 2
Código PHP:
$sql_count "select count(*) from lista where lis_act = 1";
$count_result mysql_query($sql_count$link); 
Por qué es que tanto un mysql_query($sql) y mysql_query($sql,$link) funcionan por igual?? es necesario o no el parámetro $link (con los datos para conetar al mysql) ??

Espero me lo puedan aclarar, gracias.
  #9 (permalink)  
Antiguo 30/05/2005, 08:52
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Como puedes ver en:
http://www.php.net/mysql_query
El identificador de la conexión no es un parámetro obligatorio. Si no lo pones se toma por defecto la última conexión abierta. O sea que si nunca vas a abrir más de una conexión, no es necesario.

Saludos
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:39.