我目前正在测试如何在将变量插入数组后对 mysql 查询使用简单的内爆。我只是无法绕过这个错误,我知道它说的是无效参数,但是数组已经设置好了,我知道它在我页面的另一部分使用几乎相同的代码工作。我想有些地方遗漏了一些' 或 "或 . or 但无论我如何更改它都不起作用。
感谢您的帮助!
这是我设置数组的部分:
$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
最佳答案
无效参数错误意味着您需要在 MYSQL 查询的字符串之间使用引号,例如 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
关于php - 将变量插入数组后使用内爆的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34797868/