Php 使用IN运算符将动态数组加载到SQL查询中
我有一个数组$f_数组,其值由while循环和SQL查询加载Php 使用IN运算符将动态数组加载到SQL查询中,php,mysql,arrays,Php,Mysql,Arrays,我有一个数组$f_数组,其值由while循环和SQL查询加载 $sql="SELECT * FROM comment WHERE uname IN ($f_array) ORDER BY ID DESC"; 我想在SQL查询中使用此数组名称 $sql="SELECT * FROM comment WHERE uname IN ($f_array) ORDER BY ID DESC"; 这就是我的数组在加载数据后的样子 array(4) { [0]=> string(8) "w
$sql="SELECT * FROM comment WHERE uname IN ($f_array) ORDER BY ID DESC";
我想在SQL查询中使用此数组名称
$sql="SELECT * FROM comment WHERE uname IN ($f_array) ORDER BY ID DESC";
这就是我的数组在加载数据后的样子
array(4) {
[0]=> string(8) "wisahmed"
[1]=> string(10) "test_user1"
[2]=> string(10) "test_user2"
[3]=> string(10) "test_user3"
}
有人能告诉我如何将这个数组加载到上面的MySQL查询中。首先将数组转换为字符串
$sql="SELECT * FROM comment WHERE uname IN ($f_array) ORDER BY ID DESC";
更新您的查询
首先将数组转换为字符串
更新您的查询
您需要构建一个带引号、逗号分隔的列表。这可以通过具有内爆的阵列源轻松实现:
$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
您需要构建一个带引号、逗号分隔的列表。这可以通过具有内爆的阵列源轻松实现:
$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
不能直接使用数组,必须先将其转换为字符串,因此请尝试以下操作:
$users = "'".implode("','",$f_array)."'";
然后查询应该是
$sql="SELECT * FROM comment WHERE uname IN ($users) ORDER BY ID DESC";
不能直接使用数组,必须先将其转换为字符串,因此请尝试以下操作:
$users = "'".implode("','",$f_array)."'";
然后查询应该是
$sql="SELECT * FROM comment WHERE uname IN ($users) ORDER BY ID DESC";
我只是个初学者。我不确定要搜索什么。是否显示第二个SQL查询以便$f_数组的源本身就是一个查询?如果是这样的话,你最好使用join.PS:我只是个初学者。我不确定要搜索什么。是否显示第二个SQL查询以便$f_数组的源本身就是一个查询?如果是这样的话,使用联接可能会更好。