将变量推入数组后使用implode的问题

时间:2016-01-14 19:16:26

标签: php mysql arrays

我正在测试在将变量推入数组后如何使用简单的内爆来进行mysql查询。我只是无法解决错误,我知道它说,无效的参数,但数组已经设置,我知道它在我的页面的另一部分工作与几乎完全相同的代码..我想有一些地方缺少一些'或'或。或者无论我改变什么都不起作用。

我感谢任何帮助!

以下是我设置数组的部分:

$LFBsubjects = Array();
$LFBsubjects[] = $dataset2['subject1'];
$LFBsubjects[] = $dataset2['subject2'];

我通过print_r打印的输出是:

Array ( [0] => Mathematics [1] => English ) 

现在出现了查询,它使用了内爆函数:

$SelectTSubjectsQuery = "
SELECT subject_id FROM subjects
WHERE subject IN (".implode(',', $LFBSubjects).")";

$statement = $pdo->query($SelectTSubjectsQuery);

错误是:

Warning: implode(): Invalid arguments passed in /var/www/xxx/html/lfb.php on line 626

1 个答案:

答案 0 :(得分:0)

无效的参数错误意味着您需要在字符串之间使用MYSQL QUERY之类的引号,例如IN ("test") 您可以像:

一样使用
$values = implode("','", $LFBsubjects);    
$SelectTSubjectsQuery = "    SELECT subject_id FROM subjects    WHERE subject IN ('".$values."')";

<强>解释

当你在MYSQL中使用IN RANGE作为字符串值时,你的数组包含字符串值,而不是你需要用引号传递它。

基本示例:

$SelectTSubjectsQuery = "
SELECT subject_id FROM subjects
WHERE subject IN ('val1','val2')";

更新1

检查您的评论后,您在内幕中使用了错误的变量名称

$LFBSubjects

这应该是这样的:

$LFBsubjects // with small s