php中通过向查询传递数组来动态创建或修改条件

yzckvree  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(433)

我正在尝试使用数组动态地创建或设置条件。给定一个数组,当然是名称 $courses = array('Eng, 'Deu', 'Bio', 'Chemi') 我想要一个sql查询,它在and子句中使用数组的值,条件如下:

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实现它。
任何帮助都将不胜感激。
提前谢谢。

crcmnpdw

crcmnpdw1#

而不是这么多 OR 子句,您可以简单地使用 IN(..) :

SELECT *
FROM classe
WHERE class = 'EFG' AND course IN ('Eng' ,'Deu', 'Bio')

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

cxfofazt

cxfofazt2#

这个 IN 子句将比 OR s。如果你使用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位不起作用)

相关问题