php 数组中 mysql 中的 IN 多列

Where IN multiple column in mysql from php array

如果在多个列中关闭,则找不到如何执行此查询 我有例子:

$post = json_decode($HTTP_RAW_POST_DATA);
$phoneNumbers = implode(",", $post->phones);
$emails = implode(",", $post->emails);

$sql = "SELECT phone_number,email,id FROM users WHERE phone_number,email IN (($phoneNumbers),($emails))";
$result = mysql_query($sql);

参数来自 post 响应,我需要将其与逻辑或进行比较。 这个例子对我不起作用,结果什么都没有。 我该怎么做。谢谢

将两个 WHERE INAND 合并:

SELECT phone_number, email, id FROM users WHERE phone_number IN ({$phoneNumbers}) AND email IN ($emails)

如果您需要匹配 phone 号码和电子邮件,则生成您的查询:

$ors = [];

foreach ($phoneNumbers as $i => $number) {
    $ors[] = "(phone_number = :phoneNumber{$i} AND email = :email{$i})";
    $params[":phoneNumber{$i}"] = $number;
    $params[":email{$i}"] = $emails[$i];
}

$query = $pdo->prepare("SELECT phone_number, email, id FROM users WHERE ".implode(' OR ', $ors));
$query->execute($params);
SELECT 
  phone_number,
  email,
  id 
FROM users 
WHERE phone_number IN ($phoneNumbers)
  OR email IN ($emails)
$post = json_decode($HTTP_RAW_POST_DATA);
$phoneNumbers = $post->phones;
$emails = $post->emails;

$ors = [];
foreach ($phoneNumbers as $i => $number) {
    $ors[] = "(phone_number = :phoneNumber{$i})";
    $params[":phoneNumber{$i}"] = $number;
}

foreach ($emails as $i => $email) {
    $ors[] = "(email = :email{$i})";
    $params[":email{$i}"] = $email;
}

$query = $pdo->prepare("SELECT phone_number, email, id FROM users WHERE ".implode(' OR ', $ors));
print_r($query);
$query->execute($params);