我正在运行一个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,
提前谢谢!
答案 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';";
这将给我我想要的结果。