Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Gran Problema Bd Mysql

Estas en el tema de Gran Problema Bd Mysql en el foro de Bases de Datos General en Foros del Web. Hola a todos!!! Tengo una problemilla con Mysql trabajando con PHO, intentare explicarme de la mejor manera posible. Tengo una pagina HTML que tiene varios ...
  #1 (permalink)  
Antiguo 08/09/2004, 10:36
 
Fecha de Ingreso: mayo-2003
Mensajes: 64
Antigüedad: 21 años
Puntos: 0
Gran Problema Bd Mysql

Hola a todos!!!
Tengo una problemilla con Mysql trabajando con PHO, intentare explicarme de la mejor manera posible.
Tengo una pagina HTML que tiene varios campos de consulta, en total 6 y que no siempre se rellenan los mismos. Hacer la comparacion de cada una de las posibilidade era una manera muy engorrosa por la cantidad de if's que se creaban. Ya que dependiendo de los campos que se rellenen la sentencia SQL que se tiene que crear es distinta.
Asi que lo hice es mirar que campos son diferentes de vacio y los que se rellenen hacer que formen parte de la sentencia.

$sql2=("select * from usuarios ");
$where=" where ";
if ($buscar_username_usuario!="")
{$username=$buscar_username_usuario;}
if ($buscar_nombre_usuario!="")
{$nombre=$buscar_nombre_usuario;}
if ($buscar_apellido1_usuario!="")
{$apellido1=$buscar_apellido1_usuario;}
if ($buscar_apellido2_usuario!="")
{$apellido2=$buscar_apellido2_usuario;}

Posteriormente lo que hago es crear un vector y meter los campos que se han rellanado para posteriormente ir añadiendolos a la setencia SQL

$vector=array();
if (isset($username))
{
array_push($vector,"(username=\'$username\')");
}

if (isset($nombre))
{
array_push($vector,"(Nombre=\'$nombre\')");
}

if (isset($apellido1))
{
array_push($vector,"(Apellido1=\'$apellido1\')");
}

if (isset($apellido2))
{
array_push($vector,"(Apellido2=\'$apellido2\')");
}
Y finalmente lo que hago es leer el vector y crear la setencia

for ($i=0;$i<count($vector);$i++)
{
if ($i==0)
{
$where=$where.$vector[$i];

}
else
{

$where.=" and ".$vector[$i];
}
}

Concateno con el princpio de la setencia y le ponmgo las comillas
$final=$sql2.$where;
$sql2="\"" . "$final" . "\"";
Como resultado me crea una sentencia.
Haciendo un echo con pantalla me saca los datos
es decir me saca "select * from usuarios where ........ and ..... "

pero al hacer la sentecia y que realice la busqueda en la base de datos me da error
$link=conectarse();
$result=mysql_query($sql2);
$row=mysql_fetch_array($result);

He hecho pruebas creando a mano yo una sentencia por ejemplo
$sql1="select * from usuarios where username='scsgolom ' and Nombre='Pepe';
$link=conectarse();
$result=mysql_query($sql1);
$row=mysql_fetch_array($result);

Y me hace bien la consulta, pero eso si no me hace un echo por pantalla dela pregunta, con lo que he llegado a la conclución que no debe ser tema de comillas simples, dobles etc.... que no se deben utilizar las mismas para las sentencias SQL que para poder mostrar por pantalla.

Así que si alguien podría ayudarme a decirme como podría que la sentencia se me ejecutarác correctamente , y ya de paso decirme porque si se ejecuta correctamente no se puede mostrar por pantalla y viceversa..
Siento la longitud del mensaje pero sin ejemplos yo creo que no se podría llegar a entender.

Muchas gracias!!!

Fiss5
  #2 (permalink)  
Antiguo 09/09/2004, 09:08
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 20 años, 9 meses
Puntos: 2
Había escrito una respuesta, pero al mirar mejor le mensaje, no era el problema.
¿Has probado a hacer un echo de toda la sentencia y a probarla directamente en el phpmyadmin?, suele ser lo mejor para buscar los errores de este tipo.
Un saludo.

Por cierto, esto es más un problema de programación que de base de datos.

Última edición por Vice; 09/09/2004 a las 09:50
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 07:33.