/ / Como implodir uma matriz de resultados de consulta mysql - implode

Como implodir uma matriz de resultado da consulta mysql - implodir

Estou executando uma consulta SQL que retorna 18 resultados e tento implodi-los. Quando eu uso o comando implode logo após mysqli_fetch_array implodir o mysqli_fetch_array resultado, recebo apenas o primeiro elemento da matriz. No entanto, quando eu faço o mesmo com um loop while, ele funciona bem.

Aqui está o meu código: (é simplificado para facilitar a compreensão)

$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;

Aqui está o que eu recebo:

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

Agora, quando eu uso um loop while em vez de implode (), obtenho os resultados corretos:

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

Eu recebo:

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

Agradeço antecipadamente!

Respostas:

0 para resposta № 1

Caso outra pessoa precise obter um resultado semelhante. Decidi usar GROUP_CONCAT na minha linha de consulta. Então mudei minha linha de consulta de:

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

para:

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

o que me dará o resultado desejado.