robbie dc
Quiero saber si esto es prácticamente posible en sql (usando php como servidor), donde tiene una matriz de valores (números) e intenta recuperar datos basados en valores dentro de esa matriz.
Tengo una tabla sql:
posts(
id int(11) primary key,
posts varchar(140),
user_id int(11) foreign key
);
Escribo una consulta ahora para recuperar ‘publicaciones’:
$query="SELECT * FROM posts WHERE user_id=(**Array of select user_id's**)";
¿Hay alguna función incorporada de sql para verificar los valores dentro de una matriz? ¿O debería usar PHP para esto?
De hecho, estoy tratando de implementar el modelo de Twitter de mostrar publicaciones de personas a las que seguimos.
Sí, esto es fácilmente posible. tienes que mirar Función IN de MySQL
Tu consulta sería algo como
SELECT * FROM posts WHERE user_id IN (1,2,3,4,5,6)
Puede construir el bit entre paréntesis en PHP usando implosionar()
Hikaru Shindo
SQL no puede analizar matrices de PHP. Prueba esto:
$query="SELECT * FROM posts WHERE user_id IN ({implode(',', $userIDarray)})";
-
Solo tenga cuidado de que los valores de la matriz se hayan desinfectado para la inyección de SQL.
– FtDRbwLXw6
25 de noviembre de 2011 a las 14:01
-
Por supuesto… Yo por mi parte usaría declaraciones preparadas, pero esa no es la cuestión 😉
– Hikaru-Shindo
25 de noviembre de 2011 a las 14:02
-
¿Qué funciones sanitarias se necesitan para desinfectar una matriz?
– Robbie DC
25 de noviembre de 2011 a las 14:18
-
en este caso solo se permiten valores enteros. Por lo tanto, debe verificar los valores enteros en cada elemento de la matriz. Si no genera esta matriz a partir de las entradas del usuario (o los valores de las matrices no contienen ninguno), puede omitir esto.
– Hikaru-Shindo
25 de noviembre de 2011 a las 14:22
-
olvidaste un ) después de la variable
– Wouter
20 de marzo de 2017 a las 12:49
Echa un vistazo a esta página: DONDE… EN. Puede utilizar el operador IN para comprobar si existe un determinado valor dentro de una lista de valores.
Emy
Sí, tendrás que usar la siguiente sintaxis
SELECT 'value'
IN (array)
SELECCIONE * DESDE publicaciones DONDE user_id IN (1,2,3);
– Devart
25 de noviembre de 2011 a las 13:59