MySQL中多次使用相同的数组“;IN”;使用PDO查询


Same array multiple times in MySQL "IN" query with PDO

为了避免SQL注入,我需要使用PDO执行两次具有元素列表(数组)的"IN"查询。我需要的查询是:

SELECT user_id 
FROM user 
WHERE google_id IN ('123123123abacaa','123bac21') 
   OR facebook_id IN ('123123123abacaa','123bac21');

正如您所看到的,元素列表总是相同的。但我不知道如何将我的数组配置为第二个"IN"语句,PHP会给我一个"无效参数号"错误。这是我的代码:

$list = implode(',', array_fill(0, count($ids), '?'));
$sql = "SELECT user_id 
        FROM user 
        WHERE google_id IN (".$list.") 
          OR facebook_id IN (".$list.");";
$stmt = $db->prepare($sql);
$stmt->execute(array_values($ids));

有人能告诉我如何做到这一点吗?

提前感谢

EDIT:与提供的"可能重复"有点不同,因为我需要在SQL子句中使用两次数组

解决方案:正如@u_mulder所说,通过更改的"execute"语句可以轻松解决

$stmt->execute(array_merge(array_values($ids), array_values($ids)));

在您的情况下,您可以将params的数组与自身合并:

$stmt->execute(array_merge(array_values($ids), array_values($ids)));