PHP数组元素作为SQL IN操作符的参数


PHP Array Elements as Arguments to SQL IN Operator

$option_meno = ["Lukas", "Ivka"];
$sql = "SELECT * 
        FROM uctovnictvo 
        WHERE meno IN ('$option_meno[1]', '$option_meno[0]')
          AND datum BETWEEN '$date_start' AND '$date_end'
        ORDER BY $order ";

肯定有一个更好的方法来选择用户基于名称(meno)。在$option_meno数组中可以有更多或更少的名称。

我想使这比列出选项数组('$option_meno[1]','$option_meno[0]')中的每个索引更简单。

您可以使用一些数组函数来自动生成正确的IN语句

$option_meno = ["Lukas","Ivka"];
$in = implode(',', array_map(function($item) use ($pdo) {
    return '"' . $pdo->quote($item) . '"';
}, $option_meno);
$sql = "SELECT * FROM uctovnictvo WHERE meno IN ($in)...";

代替PDO::quote,你也可以使用mysqli_real_escape_string等(取决于你的连接)。

您可以使用implode():

$sql = " SELECT * 
         FROM uctovnictvo 
         WHERE meno IN ('" . implode(''', ''', $option_meno) . "') 
           AND datum BETWEEN '$date_start' AND '$date_end'  
         ORDER BY $order ";