如何破坏mysql查询结果数组

时间:2017-06-03 23:02:02

标签: implode

我正在运行一个SQL查询,它返回18个结果,然后我试图将它们内爆。当我在mysqli_fetch_array之后立即使用implode命令来破坏mysqli_fetch_array结果时,我只得到数组的第一个元素。但是,当我使用while循环执行相同操作时,它可以正常工作。

这是我的代码:(为了便于理解,它已经简化了)

$q = "SELECT id from sr WHERE m_id = '4';";
$my_query = mysqli_query($conn, $q); 

$records = mysqli_num_rows($my_query); 
echo 'records=' . $records;

$result = mysqli_fetch_array($my_query, MYSQLI_ASSOC);
print_r ($result);

$imploded_result = implode(",", $result);
echo 'imploded_result=' . $imploded_result;

这是我得到的:

records=14
Array ( [id] => 14 )
imploded_result=14

现在,当我使用while循环而不是implode()时,我得到了正确的结果:

$imploded_result = '';
while ($result = mysqli_fetch_array($my_query, MYSQLI_ASSOC))
     $imploded_result .= $result['id'] . ',';
echo 'imploded_result=' . $imploded_result;

我明白了:

imploded_result=14,21,24,27,28,30,31,32,37,152,155,154,156,157,158,159,181,196,

提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果其他人需要得到类似的结果。我决定在查询行中使用GROUP_CONCAT。所以我改变了我的查询行:

$q = "SELECT id from sr WHERE m_id = '4';";

到:

$q = "SELECT GROUP_CONCAT(id ORDER BY id ASC SEPARATOR ',') AS id from sr WHERE m_id = '4';";

这将给我我想要的结果。