通过将数组传递给 MySQL PHP 中的查询来动态创建 OR 条件

Dynamically creating OR conditions by passing an array to a query in MySQL PHP

我正在尝试使用数组动态创建 OR 条件。给定一个数组,当然是名称 $courses = array('Eng, 'Deu', 'Bio', 'Chemi') 我想要一个 SQL 查询,该查询在其 AND 子句中使用数组的值和 OR 条件,例如:

    SELECT *
        FROM classe
        /* The OR conditions should be created in AND clause using array */
        WHERE class = 'EFG' AND (course = 'Eng' OR course = 'Deu' OR course = 'Bio')

我想在 PHP MySQL 中做到这一点。

任何帮助将不胜感激。

提前致谢。

你可以简单地使用 IN(..):

而不是那么多 OR 子句
SELECT *
FROM classe
WHERE class = 'EFG' AND course IN ('Eng' ,'Deu', 'Bio')

在PHP代码中,可以使用implode()函数将数组转换为逗号分隔的字符串,并在查询字符串生成中使用。

IN 子句比 OR 子句更易于使用。如果您使用的是 PDO,则可以利用它的 execute 绑定并动态构建占位符,然后只需将您的数组传递给它即可。

$courses = array('Eng', 'Deu', 'Bio', 'Chemi');
$placeholders = rtrim(str_repeat('?, ', count($courses)), ', ');
$query = "select * from table WHERE class = 'EFG' AND course in ({$placeholders})";
$stmt = $pdo->prepare($query);
$stmt->execute($courses);

演示:https://3v4l.org/jcFSv(PDO 位无效)