我有一个包含用户ID列表的数组,我需要查看我的所有"用户"在DB中的表,只返回数组包含的数字,最好的方法是什么?
<?php
$users_ids = $_REQUEST["users_ids"];
$myArray = explode('|', $users_ids);
print_r($myArray);
请帮忙。
答案 0 :(得分:1)
以下内容如何:
$users_ids = $_REQUEST["users_ids"];
$users_ids_array = array_map('intval',explode('|', $users_ids)) ;
$query = "SELECT * FROM users WHERE id IN (" . implode(',', $users_ids_array) . ")" ;
上面的代码将生成一个mysql,只检索那些用户ID:
SELECT * FROM users WHERE id IN (
234 , # an example user_id
545 , # an example user_id
565 # an example user_id
)
请注意上面的array_map
函数来保护$_REQUEST["users_ids"]
变量,确保用户ID只是整数,而不是" 233) ; DELETE FROM users ; # "
等危险字符串 - &gt ; (在这种情况下array_map
阻止SQL注入)
答案 1 :(得分:0)
在select语句中,使用IN子句。要构造语句,请将数组内嵌到逗号分隔的列表中(而不是垂直条)。如果您的数组包含1,2,3,4,则生成的SQL语句可能如下所示:
SELECT *
FROM users
WHERE user_id in (1,2,3,4)