通过将数组传递给 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 位无效)
我正在尝试使用数组动态创建 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 位无效)