Foros del Web » Programando para Internet » PHP »

Consulta MySQL con php

Estas en el tema de Consulta MySQL con php en el foro de PHP en Foros del Web. Hola tengo escrito el archivo especialidades.php y quiero que me muestre los resultados en una tabla pero no logro que me funcione y no detecto ...
  #1 (permalink)  
Antiguo 09/05/2003, 09:51
Avatar de Henker  
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 21 años, 2 meses
Puntos: 0
Pregunta Consulta MySQL con php

Hola tengo escrito el archivo especialidades.php y quiero que me muestre los resultados en una tabla pero no logro que me funcione y no detecto el error, en concreto el mensaje que me da es: "Consulta fallida" ¿? os agradecería que me ayudarais a detectarlo.

Nota: He comprobado que la consulta SQL antes de adaptarla al archivo php funciona correctamente.

-- especialidades.php --

<?php

@ $mysql = mysql_connect("localhost", "miguel", "wwds2jkqx")
or die("No se puede conectar con la base de datos");
@ mysql_select_db("doctoresmir", $mysql)
or die("No puede ser seleccionada la base de datos Doctores MIR");
$query = "SELECT A.colegiado, B.especialidad FROM medicos A, ubicacion B"
."WHERE A.colegiado REGEXP '^[mM]' AND B.zona = 'Lleida'"
."ORDER BY A.colegiado DESC";
$resultados = mysql_query($query, $mysql)
or die("Consulta fallida");
?>
<html>
<head>
</head>
<body>
<h3>Relación de MIRs (M) de la zona de Lleida</h3>
<table border="1" cellspacing="0" cellpadding="7">
<tr bgcolor="#CCCCCC">
<td>Colegiado</td>
<td>Especialidad</td>
</tr>
<?php while($fila = mysql_fetch_object($result)) :?>
<tr>
<td><?=$fila->colegiado?></td>
<td><?=$fila->especialidad?></td>
</tr>
<?php endwhile; ?>
</table>
</body>
</html>
<?php
mysql_close($mysql);
?>
  #2 (permalink)  
Antiguo 09/05/2003, 10:01
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Para ver el mensaje que genera MySQL cambia

or die("consulta fallida");

por

or die(mysql_error());

Tambien haz un echo $query; y comprueba que es la correcta;

Saludos.

PD: Ahora que me doy cuenta, el error puede ser que no dejas espacios en las cadenas que concatenas.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 09/05/2003 a las 10:04
  #3 (permalink)  
Antiguo 09/05/2003, 11:08
Avatar de Henker  
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 21 años, 2 meses
Puntos: 0
Gracias Josemi acabo de hacer lo que comentas y me dice que

You have an error in your SQL syntax near 'A.nombre REGEXP '^[aA]' AND B.zona = 'Barcelona'ORDER BY A.nombre DESC' at line 1

Lo siento pero soy novato en esto y no veo el error que me dice este mensaje

Lo que dices sobre: "Tambien haz un echo $query; y comprueba que es la correcta;" no se a lo que te refieres exactamente. ¿?

Gracias
  #4 (permalink)  
Antiguo 09/05/2003, 11:30
 
Fecha de Ingreso: abril-2003
Ubicación: Zaragoza
Mensajes: 10
Antigüedad: 21 años
Puntos: 0
Cuando Josemi te dice de hacer un echo $query, se refiere a que visualices por pantalla la sentencia de sql que haces para comprobar que es la correcta. De este modo puedes ver si está bien escrita o falta alguna comilla.

Si tras comprobar el código sql, ves que la sentencia es correcta y te sigue fallando, prueba a poner lo siquiente:
$query = "SELECT A.colegiado, B.especialidad FROM medicos A, ubicacion B";
$query .= "WHERE A.colegiado REGEXP '^[mM]' AND B.zona = 'Lleida'";
$query .= "ORDER BY A.colegiado DESC";

Espero que te sirva de algo, yo tampoco tengo mucha idea. Suerte.
  #5 (permalink)  
Antiguo 09/05/2003, 11:44
Avatar de Henker  
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola he puesto los $query y me dice que:

Parse error: parse error, unexpected T_VARIABLE in especialidades.php on line 9
  #6 (permalink)  
Antiguo 09/05/2003, 11:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Nefer . si haces un echo $query .. veras que obtienes algo como:

SELECT A.colegiado, B.especialidad FROM medicos A, ubicacion BWHERE A.colegiado REGEXP '^[mM]' AND B.zona = 'Lleida'ORDER BY A.colegiado DESC

Si te das cuenta .. te falta espacios al final de esas $query para que quede algo así:

SELECT A.colegiado, B.especialidad FROM medicos A, ubicacion B WHERE A.colegiado REGEXP '^[mM]' AND B.zona = 'Lleida' ORDER BY A.colegiado DESC

Los espacios en SQL son muyyy inportantes .. sino, se interpretaran como una sentencia ..

A todo esto .. que línea es la 9? ..

Otro consejo .. en fase de desarrollo .. no uses lo @ delante de las funciones .. eso desactiva mensajes de error y en estos casos es bueno verlos para darle solución ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 09/05/2003, 12:28
Avatar de Henker  
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 21 años, 2 meses
Puntos: 0
La línea 9 es esta:

."WHERE A.colegiado REGEXP '^[mM]' AND B.zona = 'Lleida'"



Quitando las @ me dice lo siguiente

You have an error in your SQL syntax near 'A.nombre REGEXP '^[aA]' AND B.zona = 'Lleida'ORDER BY A.nombre DESC' at line 1

La sentencia SQL la he vuelto a chequear y está correctamente escrita pero no entiendo por qué me dice que no está bien he revisado las "" y demás y no veo el error. Alguna sugerencia?

."WHERE A.colegiado REGEXP '^[mM]' AND B.zona = 'Lleida'"

Última edición por Henker; 09/05/2003 a las 12:17
  #8 (permalink)  
Antiguo 09/05/2003, 12:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues el problema es de SQL .. no de PHP .. como bien dice el error..

Te recomiendo que preguntes en el foro "Base de datos" con el SQL que quieres ejecutar y el error que tienes ...

A simple vista se vé que no estas usando bien la clausula WHERE .. pues sería:

WHERE campo.tabla operador condicion ...

ó

WHERE funcion_sql(parametros)

No conozco la sintax de REGEXP .. pero creo que tendrías que hacer un simple:

WHERE A.nombre=REGEXP '^[aA]'

o algo así .. una comparación .. o > o < ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 09/05/2003, 15:21
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Cluster, REGEXP es un alias de RLIKE y funciona como LIKE.

Henker, ¿te sige dando el error de sintaxis en la linea 9 o solo el error de MySQL? ¿Has puesto ya el espacio despues de "ubicacion B " o antes del " WHERE" como te comento Cluster? Porque tal como esta dando el mensaje, es que estan generando BWHERE todo junto.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 09/05/2003, 18:23
Avatar de Henker  
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 21 años, 2 meses
Puntos: 0
A ver... quizás si vamos al revés se entenderá mejor la sentencia ejecutada en MySQL original es:

SELECT A.colegiado, B.especialidad
FROM medicos A, ubicacion B
WHERE A.colegiado REGEXP "^[mM]" AND B.zona = "Lleida"
ORDER BY A.colegiado DESC;

Y funciona correctamente sin problemas. El error está al "traducirlo-adaptarlo" al php por eso Cluster lo pregunté en este foro y no en el de Bases de Datos.
Le he puesto un espacio después de ubicación B (o sea antes del where) y me queda así:

SELECT "A.colegiado, B.especialidad FROM medicos A, ubicacion B"
. "WHERE A.colegiado REGEXP '^[mM]' AND B.zona = 'Lleida'"
."ORDER BY A.colegiado DESC";

Cuando ejecuto el archivo php me sale el mismo error ¿ ?
You have an error in your SQL syntax near 'A.nombre REGEXP '^[aA]' AND B.zona = 'Lleida'ORDER BY A.nombre DESC' at line 1
  #11 (permalink)  
Antiguo 09/05/2003, 20:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
'Lleida'ORDER .. sigue estando junto ...

Repasa los espacios.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 10/05/2003, 11:39
 
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 85
Antigüedad: 21 años, 2 meses
Puntos: 2
You have an error in your SQL syntax near 'A.nombre REGEXP '^[aA]' AND B.zona = 'Barcelona'ORDER BY A.nombre DESC' at line 1

Revisa bien por que la $query

$query = "SELECT A.colegiado, B.especialidad FROM medicos A, ubicacion B"
."WHERE A.colegiado REGEXP '^[mM]' AND B.zona = 'Lleida'"
."ORDER BY A.colegiado DESC";


no esta dando el error de arriba..!!

¿en que parte de $query esta *A.nombre*?

o me tengo mucho sueño o amigo mio te mareaste con el codigo..!!

yo cambiaria:
or die("Consulta fallida");
por
or die("Consulta fallida: ".$query." ".mysql_error())

asi sabes perfectamente cual es la sentencia que te esta dando el error...

SaludoS
__________________
http://www.zypper.cl/blues.gif
(web-hosting)

  #13 (permalink)  
Antiguo 11/05/2003, 13:56
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Henker, no es por resultar pesado, pero no has hecho el echo $query o no lo has querido leer. Porque si lo habrias hecho hubieras visto que la consulta te sale en una sola linea y todo seguido como el pasodoble. Por mucho que este en tres lienas de codigo solo es una linea. Por eso tienes cosa como BWHERE y 'Lleida'Order. Ese es tu problema y se soluciona simplemente con poner un espacio delante del WHERE y delante del ORDER.

Y es la ultima vez que lo digo.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #14 (permalink)  
Antiguo 12/05/2003, 19:45
Avatar de Henker  
Fecha de Ingreso: febrero-2003
Mensajes: 37
Antigüedad: 21 años, 2 meses
Puntos: 0
Hola a tod@s
Pues sí resulta que Josemi lleva tooooda la razón (pero Josemi no te mosquees hombre que estoy aprendiendo ) todo ha sido poner el espacio y se ha arreglado!! Ya lo comentó Cluster lo "puñetitas" que eran los espacios estoy seguro que otra vez no me vuelve a pasar lo mismo, el problema era que ponía el espacio pero no en el lugar adecuado (ya que lo ponía delante del punto)

Gracias a todos por la ayuda que realmente me ha servido de mucho y espero que a la gente que empieza como yo le pueda servir el aprender de los errores que cometemos los demás.
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 06:32.