Ir al contenido


Foto

error de sintaxis consulta BD en clase de php


  • Por favor identifícate para responder
11 respuestas en este tema

#1 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 20 marzo 2013 - 05:25

he creado una clase donde el construct recibe parámetros de un formulario y un método hace una consulta a la base de datos.

esa consulta me devuelve un error de sintaxis que no logro encontrar para corregirlo.

este es el error

ERROR:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''q' at line 1
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\xampp\web\trabajo\clases.php on line 40


este es el código que provoca el error


public function consultabd()
{
$consulta="SELECT usuario, ".$this->tipo_habita." FROM usuarios, habitaciones WHERE usuario='".$this->usuario; //this->usuario contiene el nombre de usuario de pruebas en localhost 'q'
$result_conexion= Conectar::conexion($consulta);
while ($fila=mysql_fetch_array($result_conexion)) //esta es la linea 40
{
$this->cantidad=$fila;
}
return $this->cantidad;
}




si alguien me puede ayudar a solucionar esto por favor. si necesitan toda la clase o todo el código diganmelo y lo pego ok? gracias!!!! :D
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 20 marzo 2013 - 05:36

Pues pregunto, como no veo la clase Conectar(), ¿Esa clase realiza el mysql_query?, porque sino ya ahí está el problema.

Saludos.
  • 0

#3 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 20 marzo 2013 - 05:43

sí, aquí tengo la clase Conectar :D


class  Conectar
{
public static function conexion($TextoSQL)
{
$IDConexion = mysql_connect("localhost", "root", "");

mysql_select_db("hoteles", $IDConexion);

$IDConsulta = mysql_query($TextoSQL);

if ($IDConsulta == false)
{
echo "ERROR: <br>\n";
echo mysql_error($IDConexion);
}

return $IDConsulta;
}
}

  • 0

#4 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 20 marzo 2013 - 05:56

Prueba dos cosas:

1.

$IDConsulta = mysql_query($TextoSQL,$IDConexion);


2.

$IDConsulta = mysql_query($TextoSQL,$IDConexion) or die(mysql_error());


El segundo es para ver el error exacto, nos comentas.

Saludos.
  • 0

#5 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 20 marzo 2013 - 06:00

con el primero me devuelve el mismo error. con el segundo solo me devuelve

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''q' at line 1
  • 0

#6 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 20 marzo 2013 - 06:13

Pues ahí está el error: "'q'", ¿Intentas obtener un parámetro por medio de GET o POST?.

Saludos.
  • 0

#7 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 20 marzo 2013 - 06:21

lo obtengo de $_SESSION['usuario'] y lo paso como parámetro al __construct

'q' (sin '') es el nombre del usuario de pruebas que tengo en localhost.

lo paso como parámetro a la instancia de la clase Plazas así


$rest=new Plazas($_POST['habitaciones'],$_POST['numero_plazas'],$_SESSION['usuario']);
$rest->consultabd();


  • 0

#8 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 20 marzo 2013 - 06:35

Pues quiere decir que está en blanco, por eso no devuelve valores y ocurre ese error, debes verificar bien si está recibiendo ese parámetro o variable de algún lado.
  • 0

#9 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 21 marzo 2013 - 01:49

he vuelto a revisar el código y sí recibe el parámetro. he decidido dar unos cuantos pasos atrás y probar la conexión a la BD fuera del objeto, directamente justo después de el formulario, recibiendo parámentros sencillos y el error persiste. no lo entiendo.

¿para esta nueva duda creo un nuevo post y estudiamos juntos el problema o lo pongo aquí?
  • 0

#10 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 21 marzo 2013 - 04:45

Pues vamos hacer un último intento, sólo para identificar el problema, en la consulta tienes un objeto "$this->tipo_habi", elimina eso y ponlo directo, pruebalo y nos comentas si persiste el problema.

Saludos.
  • 0

#11 jonbra

jonbra

    Advanced Member

  • Miembros
  • PipPipPip
  • 57 mensajes

Escrito 21 marzo 2013 - 07:43

puffff ha sido un error de sintaxis en sql.

revisando la documentación de sql y haciendo pruebas el error era que después del operador where debo poner paréntesis para encerrar las condiciones. un error tonto  8o|

muchísimas gracias por tu ayuda de valor incalculable, te agradezco muchísimo tus molestias por ayudarme.

ahora tengo otro problema de sql  ¿lo pongo en otro nuevo post no?

(tiene que ver con que aunque le pongo la condición where me muestra los datos de todos los usuarios en vez del usuario específico)
  • 0

#12 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 21 marzo 2013 - 08:38


ahora tengo otro problema de sql  ¿lo pongo en otro nuevo post no?


Si amigo, de esa manera separamos problemas y puede ser útil para alguién más la solución.
  • 0




IP.Board spam blocked by CleanTalk.