"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que minha instrução preparada pelo PDO está retornando resultados duplos ao buscar dados em um arquivo CSV?

Por que minha instrução preparada pelo PDO está retornando resultados duplos ao buscar dados em um arquivo CSV?

Publicado em 2024-11-08
Navegar:726

Why is my PDO prepared statement returning double results when fetching data into a CSV file?

Instrução preparada PDO buscando resultados duplos

Um usuário encontrou um problema em que sua instrução preparada PDO estava retornando resultados duplos ao enviar dados para um Arquivo CSV. O código em questão utiliza a função $result_get_rows->fetch() para recuperar as linhas do banco de dados.

Compreendendo o método Fetch()

O fetch() O método de um objeto PDOStatement é usado para recuperar linhas de um conjunto de resultados. Por padrão, ele retorna linhas como matrizes indexadas (por número de coluna) e matrizes associativas (por nome de coluna).

Resolvendo o problema

Para corrigir os resultados duplos , é recomendado especificar como as linhas de resultados devem ser retornadas usando o parâmetro fetch_style do método fetch(). Este parâmetro aceita uma das seguintes constantes:

  • PDO::FETCH_ASSOC: Retorna um array associativo indexado por nome de coluna.
  • PDO::FETCH_NUM: Retorna um array indexado indexado por coluna number.
  • PDO::FETCH_BOTH (padrão): Retorna uma matriz indexada pelo nome da coluna e pela coluna número.

Código modificado

Ao usar PDO::FETCH_ASSOC, o código pode ser modificado da seguinte forma:

while ($rows_get_rows = $result_get_rows->fetch(PDO::FETCH_ASSOC)) {
  $csv .= '"'.join('","', str_replace('"', '""', $rows_get_rows))."\"\n";
}

Esta modificação garantirá que as linhas sejam retornadas como matrizes associativas, evitando efetivamente a duplicação de valores ao enviar para o arquivo CSV.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3