Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Array PHP en una cláusula WHERE de MySQL

Estas en el tema de Array PHP en una cláusula WHERE de MySQL en el foro de PHP en Foros del Web. Hola a todos. He estado googleando un rato y no encuentro lo que busco (no sé si es que no utilizo las palabras adecuadas). Verán, ...
  #1 (permalink)  
Antiguo 05/08/2012, 02:03
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 11 años, 11 meses
Puntos: 0
Pregunta Array PHP en una cláusula WHERE de MySQL

Hola a todos. He estado googleando un rato y no encuentro lo que busco (no sé si es que no utilizo las palabras adecuadas). Verán, tengo la siguiente sentencia SQL:
Código MySQL:
Ver original
  1. SELECT id,texto,sugerido, FROM enlaces WHERE 'sugerido' ='1' AND 'id' = XXXXXX"
Donde están las X, tengo que poner un aray que contiene números. Es decir, necesito que seleccione aquellos registros cuyo id esté entre los elementos del array. ¿Cómo puedo hacer esto?

Luego posteriormente, necesito suprimir los elementos del array ,que he seleccionado, para hacer otras consultas.

Un saludo y muchas gracias a quien pueda ayudarme

Última edición por daniel7754; 05/08/2012 a las 02:10
  #2 (permalink)  
Antiguo 05/08/2012, 04:15
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Array PHP en una cláusula WHERE de MySQL

Realmente no es tan difícil, sólo necesitas saber que la sentencia SQL debe ser algo como:

Código MySQL:
Ver original
  1. SELECT id,texto,sugerido, FROM enlaces
  2.     WHERE 'sugerido' ='1' AND 'id' IN (valor1, valor2, valorN)

Para obtener los números como una sóla cadena separada por comas utilizas la función implode() y, si después necesitas otros elementos, simplemente creas de nuevo el array: $ids = array(); y lo llenas como necesites.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 05/08/2012, 05:11
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Array PHP en una cláusula WHERE de MySQL

Hola Triby. Te doy las gracias por todas las veces que me estás ayudando. Estoy renovando la web que estaba haciendo cuando te pregunté lo de las sesiones, no creo que te acuerdes ya .
Un fragmento del código es el siguiente:
Código PHP:
$compacto=implode(', '$identificadores);
echo 
$compacto;
    
$sql="SELECT id,texto,sugerido FROM 2links WHERE 'id' IN ('$compacto')";
    
$resultado=mysqli_query($mysqli$sql);
    while (
$row=mysqli_fetch_assoc($resultado)){
        echo 
"<br />" $row[id];
    } 
El problema que me da esto es que en compacto salen los idenificadores con la sintaxis que me has indicado antes (Lo compruebo con el primer echo). Sin embargo, cuando hago la consulta (la he simplificado para las pruebas) me encuentro con que me da todos los registros de la tabla. ¿Qué crees que podrá ser?
Gracias otra vez.

PD: Encontré un error en el código y ahora hace otro comportamiento: No me muestra ningún registro. El código lo acabo de rectificar
  #4 (permalink)  
Antiguo 05/08/2012, 06:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Array PHP en una cláusula WHERE de MySQL

Para que funcione, $identificadores debe ser un array no asociativo, ejemplo:

$identificadores = array(1, 5, 10, 25);

Ahora, para saber si hay un error, debes modificar la consulta a esto:

$resultado=mysqli_query($mysqli, $sql) or die(mysqli_error());

Con eso sabrás si la consulta está mal, si no, habrá que buscar dónde está el error.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 05/08/2012, 07:53
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Array PHP en una cláusula WHERE de MySQL

Hola de nuevo Triby. He puesto lo que me has dicho para verificar si hay errores en la consula, y no me muestra nada adicional en la página, lo que dedzco que será es que no hay ningun error en la consulta. Pongo aquí el fragmento de lo que llevo hecho para que me comentes que puede ser, porque yo ya no sé que podrá ser. Si necesitas acceso a la web dímelo y miraría de pasarte el link.
Código PHP:
$catdecimal=pow(2, ($idcat2 1));
$sql="SELECT id,abrev2,texto FROM 2links WHERE abrev2 >= '$catdecimal'";
$resultado=mysqli_query($mysqli$sql);
while (
$row=mysqli_fetch_assoc($resultado)){
$check=$row[abrev2] & $catdecimal
    if (
$check==$catdecimal){
        
$identificadores[]=$row[id]; 
    }
}
//Ahora se va a comprobar si el array tiene elementos.
if(count($identificadores)==0){
    echo 
"<p class='warning'>No hay contribuciones de momento</p>";
//    mysqli_close($mysqli);
}else{
    
//Aquí se van a separar los enlaces en tres grupos
$compacto=implode(', '$identificadores);
echo 
$compacto;
    
$sql="SELECT id,texto,sugerido FROM 2links WHERE 'id' IN ('$compacto')";
    
$resultado=mysqli_query($mysqli$sql) or die(mysqli_error());;
    while (
$row=mysqli_fetch_assoc($resultado)){
        echo 
"<br />" $row[id];
    }
    
//Aquí va más código    

Lo dicho muchas gracias. Yo seguiré haciendo pruebas a ver que puede ser, si seguro que luego será cualquier tontería

Última edición por daniel7754; 05/08/2012 a las 09:17
  #6 (permalink)  
Antiguo 05/08/2012, 17:04
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Array PHP en una cláusula WHERE de MySQL

Qué obtienes si haces echo de la consulta?

echo $sql;

Si ejecutas esa consulta en PHPMyAdmin obtienes los resultados que deseas?

Si no, pues debes revisar nuevamente la lógica de tu script/proyecto.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 06/08/2012, 02:42
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Array PHP en una cláusula WHERE de MySQL

Muchas gracias Triby. Hice la consulta con phpmyadmin, y me dijo también que cero columnas. Luego, toqueteando un poco y eso, vi que enía un error en el código:

Código erróneo:
Código PHP:
SELECT id,texto,sugerido FROM 2links WHERE 'id' IN ($compacto) && sugerido=
Código correcto:
Código PHP:
SELECT id,texto,sugerido FROM 2links WHERE id IN ($compacto) && sugerido=
Al parecer las comillas simples sólo se deben poner cuando se utilizan variables, pero no para nombrar columnas.

Una vez más, muchas gracias Triby
  #8 (permalink)  
Antiguo 06/08/2012, 03:04
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 15 años, 11 meses
Puntos: 326
Respuesta: Array PHP en una cláusula WHERE de MySQL

Cita:
Iniciado por daniel7754 Ver Mensaje
Al parecer las comillas simples sólo se deben poner cuando se utilizan variables, pero no para nombrar columnas.

Una vez más, muchas gracias Triby
Se usa el ` para las columnas

Un ejemplo:

Código MySQL:
Ver original
  1. SELECT `id`, `texto`, `sugerido` FROM `2links` WHERE `id` IN ($compacto) && `sugerido` = 1
__________________
>> Eleazan's Source
>> @Eleazan
  #9 (permalink)  
Antiguo 06/08/2012, 06:54
 
Fecha de Ingreso: abril-2012
Mensajes: 20
Antigüedad: 11 años, 11 meses
Puntos: 0
Respuesta: Array PHP en una cláusula WHERE de MySQL

Si. Es cierto Eleazan. Al indagar con phpmyadmin, he visto que al seleccionar los campos a la derecha ponía esa especie de acento grave. Muchas gracias, parece que ya empieza a ir sobre ruedas el script.

Etiquetas: mysql
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 20:36.