2010-01-27 6 views
1

J'ai un simple tableau en PHP, diretableau PHP array_intersect_key avec base de données MYSQL

[1, 2, 4, 5, 6, 7] 

et je souhaite interroger une base de données MYSQL

[1, who] 
[2, where] 
[3, some] 
[6, there] 
[9, too] 

Je souhaite seulement recevoir les lignes d'intersection entre le tableau PHP et la colonne des index de la base de données. Donc cela se traduirait par

[1, who] 
[2, where] 
[6, there] 

Des idées? Merci!

Répondre

4

Vous voulez que le mot-clé in sql

SELECT id, title FROM tablename WHERE id IN (1, 2, 4, 5, 6, 7) 

Vous pouvez préparer la liste des numéros à l'aide:

$nums = array(1, 2, 4, 5, 6, 7) 
$sql = 'SELECT id, title FROM tablename WHERE id IN (' . implode(',', $nums) . ')'; 

Edit: vous pouvez vous assurer que votre entrée contient des chiffres avec array_filter:

$nums = array_filter($nums, 'is_numeric'); 
+0

Pourrait éventuellement ajouter un avertissement géant sur les dangers de l'injection SQL ailleurs e ... –

+0

Merci beaucoup, tous les deux. Je connaissais l'opérateur IN, mais dès que vous avez posté, je savais quoi faire. Je serai également sûr de vérifier la vulnérabilité d'injection. – Booker

+0

Merci, ajouté array_filter pour s'assurer que $ nums ne contient que des chiffres –

Questions connexes