在MySQL PHP中通过将数组传递给查询来动态创建或设置条件
我正在尝试使用数组动态创建或设置条件。给定一个数组,当然是coursenames在MySQL PHP中通过将数组传递给查询来动态创建或设置条件,php,mysql,arrays,conditional,clause,Php,Mysql,Arrays,Conditional,Clause,我正在尝试使用数组动态创建或设置条件。给定一个数组,当然是coursenames$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'
$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实现它
任何帮助都将不胜感激
提前感谢。您可以简单地使用以下内容,而不必使用太多的
或条款:
在PHP代码中,可以使用函数将数组转换为逗号分隔的字符串,并在查询字符串生成中使用它 IN
子句中的将比或
s更容易使用。如果您正在使用PDO,您可以利用它的执行
绑定并动态构建占位符,然后将数组传递给它
$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);
演示:(PDO位不起作用)可能和课程('Eng','Deu','Bio')
。。。使用内爆
…或者使用PDO,应该能够非常容易地生成该值。@user3783243在用户数据上使用内爆
时要非常小心,因为这是到的特快列车。感谢您的回复,使用内爆,我得到如下字符串:“Eng,Deu,Bio”,我想要如下值:“'Eng'、'Deu'、'Bio'”@musayyabnaved您的问题陈述说您得到了一个数组。请确认您到底得到了什么?是的,在数组中:$courses=array('Rel-GK1','F6','Bio','Chemi');$placeholders=内爆(',',$courses);@musayyabnaved检查这个答案:你会知道怎么做的。非常感谢你得到了:)如果这是用户数据,你必须使用带有占位符值的准备语句。
$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);