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 № 1Caso 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.