Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL PHP中通过将数组传递给查询来动态创建或设置条件_Php_Mysql_Arrays_Conditional_Clause - Fatal编程技术网

在MySQL PHP中通过将数组传递给查询来动态创建或设置条件

在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'

我正在尝试使用数组动态创建或设置条件。给定一个数组,当然是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' 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);