Foros del Web » Programando para Internet » PHP »

Error con consulta mysql

Estas en el tema de Error con consulta mysql en el foro de PHP en Foros del Web. Saludos Amigos, Les escribo porque tengo un problema tengo una consulta con busqueda.. todo va bien, pero la consulta no anda sino le pongo un ...
  #1 (permalink)  
Antiguo 18/12/2014, 12:47
 
Fecha de Ingreso: septiembre-2012
Mensajes: 53
Antigüedad: 11 años, 7 meses
Puntos: 2
Pregunta Error con consulta mysql

Saludos Amigos,
Les escribo porque tengo un problema
tengo una consulta con busqueda.. todo va bien, pero la consulta no anda sino le pongo un limite

este es mi consulta

Código PHP:
if($_GET['b']){

$palabras explode(' '$_GET['b']);

$STOCK '';
$minimo '';
$maximo '';

if(isset(
$_GET['todos'])){
$STOCK 'AND productos.Caracol > 0 AND productos.Matriz_1 > 0 AND productos.Unicentro > 0 AND productos.Cuenca > 0 AND productos.Recreo > 0 AND productos.City_Mall > 0 AND productos.Manta > 0 AND productos.Portoviejo > 0 AND productos.Ambato > 0 AND productos.Mall_del_Sur > 0 AND productos.Machala > 0 AND productos.Orellana > 0 AND productos.Matriz_2 > 0';

}elseif (isset(
$_GET['cualquier'])) {

    
$STOCK 'AND (productos.Unicentro > 0 || productos.City_Mall > 0 || productos.Mall_del_Sur > 0 || productos.Orellana > 0
                || productos.Caracol > 0 || productos.Matriz_1 > 0 || productos.Recreo > 0 || productos.Matriz_2 > 0
                || productos.Ambato > 0 || productos.Cuenca > 0 || productos.Manta > 0 || productos.Portoviejo > 0 || productos.Machala > 0)'
;

}elseif (isset(
$_GET['guayaquil-todos'])) {
    
$STOCK 'AND productos.Unicentro > 0 AND productos.City_Mall > 0 AND productos.Mall_del_Sur > 0 AND productos.Orellana > 0 ';

}elseif (isset(
$_GET['guayaquil'])) {
$STOCK 'AND (productos.Unicentro > 0 || productos.City_Mall > 0 || productos.Mall_del_Sur > 0 || productos.Orellana > 0) ';
}elseif(isset(
$_GET['quito-todos'])){
    
$STOCK 'AND productos.Caracol > 0 AND productos.Matriz_1 > 0 AND productos.Recreo > 0 AND productos.Matriz_2 > 0';
}elseif(isset(
$_GET['quito'])){
    
$STOCK 'AND (productos.Caracol > 0 || productos.Matriz_1 > 0 || productos.Recreo > 0 || productos.Matriz_2 > 0)';
}elseif(isset(
$_GET['ambato'])){
    
$STOCK 'AND productos.Ambato > 0 ';
}elseif(isset(
$_GET['cuenca'])){
    
$STOCK 'AND productos.Cuenca > 0 ';
}elseif(isset(
$_GET['manta'])){
    
$STOCK 'AND productos.Manta > 0 ';
}elseif(isset(
$_GET['portoviejo'])){
    
$STOCK 'AND productos.Portoviejo > 0 ';
}elseif(isset(
$_GET['machala'])){
    
$STOCK 'AND productos.Machala > 0 ';
}

if(isset(
$_GET['minimo'])){
 
$minimo ' AND info_productos.precio >= '.$_GET['minimo'];
}


if(isset(
$_GET['maximo'])){
 
$maximo ' AND info_productos.precio <= '.$_GET['maximo'];
}

$_GET['b']=str_replace(' ''%'$_GET['b']);
    
$busqueda mysql_query("SELECT productos.*, productos.ID AS id_unico, info_productos.*, productos_nuevos.ID AS nuevo FROM productos
     LEFT JOIN info_productos ON productos.ID = info_productos.ID 
     LEFT JOIN productos_nuevos ON productos.codigo = productos_nuevos.codigo AND productos_nuevos.fecha = '"
.date('m').'/'.date('o')."' 
     WHERE  (productos.codigo LIKE '%"
.$_GET['b']."%' 
     OR productos.producto LIKE '%"
.$_GET['b']."%' 
     OR info_productos.Titulo LIKE '%"
.$_GET['b']."%' 
     OR info_productos.url_web LIKE '%"
.$_GET['b']."%'  
     OR info_productos.descripcion LIKE '%"
.$_GET['b']."%' 
     OR info_productos.precio LIKE '%"
.$_GET['b']."%') ".mysql_real_escape_string($STOCK).mysql_real_escape_string($minimo).mysql_real_escape_string($maximo)." LIMIT 50" );
/*
ORDER BY
     productos.Matriz_1,
     productos.Matriz_2,
     productos.Caracol,
     productos.Recreo,
     productos.Unicentro,
     productos.City_Mall,
     productos.Mall_del_Sur,
     productos.Orellana,
     productos.Ambato,
     productos.Cuenca,
     productos.Portoviejo,
     productos.Manta,
     productos.Machala
     desc
     */
    
while($row mysql_fetch_array($busqueda)){
        
$resultados[] = $row;
    }


    
    echo 
json_encode($resultados);

si le saco el LIMIT, se queda en blanco y no recibo nada
  #2 (permalink)  
Antiguo 18/12/2014, 13:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Error con consulta mysql

Es altamente porbable que la consulta resule ineficiente, sea porque estas haciendo un JOIN en estrella, o bien simplemente obtienes un producto cartesiano, lo que sería espantoso.
El tema es más de MySQL que de PHP, pero afecta a a PHP porque la consulta debe tardar demasiado y se cae el proceso por timeout.
Habrái que afinar esa consulta, pero sin hacer pruebas no hay mucho que se pueda decir desde ladoo de SQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: Ninguno
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 14:35.