使用IN运算符将动态数组加载到SQL查询中

时间:2018-01-23 07:48:52

标签: php mysql arrays

我有一个数组while,其值由$sql="SELECT * FROM comment WHERE uname IN ($f_array) ORDER BY ID DESC"; 循环和SQL查询加载。

我想在SQL查询中使用此数组名称。

array(4) { 
    [0]=> string(8) "wisahmed" 
    [1]=> string(10) "test_user1" 
    [2]=> string(10) "test_user2" 
    [3]=> string(10) "test_user3" 
}

这是我的数组在加载数据后的样子,

AVCaptureMovieFileOutput

有人能告诉我如何将这个数组加载到上面的MySQL查询中。

3 个答案:

答案 0 :(得分:3)

您需要构建带引号的逗号分隔列表。这可以通过内爆的数组源轻松完成:

$imploded = implode("','", $f_array)

这将呈现:

wisahmed','test_user1','test_user2','test_user3

因此,将其包装在单引号中并将其放入现有查询中会产生正确的格式:

$sql="SELECT * FROM comment WHERE uname IN ('{$imploded}') ORDER BY ID DESC";

成为:

SELECT * FROM comment WHERE uname IN ('wisahmed','test_user1','test_user2','test_user3') ORDER BY ID DESC

答案 1 :(得分:1)

首先将数组转换为字符串

$array = ["wisahmed", "test_user1", "test_user2", "test_user3"];
$users = implode(",", $array);

更新您的查询

$sql="SELECT * FROM comment WHERE uname IN($users) ORDER BY ID DESC";

答案 2 :(得分:0)

你不能直接使用数组,你必须先将其转换为字符串,所以请尝试以下方法:

$users = "'".implode("','",$f_array)."'";

然后查询应该是

$sql="SELECT * FROM comment WHERE uname IN ($users) ORDER BY ID DESC";