Por que estou recebendo a mesma coluna duas vezes no meu PHP | Consulta PostgreSQL? [duplicado]
Eu tenho um banco de dados Postgres do qual recupero dados com um script PHP. Dentro deste script eu conecto por meio do PDO:
$connection = new PDO('pgsql:host=' . $host . ';dbname=' . $database, $username, $password);
Então, eu tenho uma consulta que deve listar apenas o id
de cada instância:
$query = 'SELECT id FROM my_table WHERE "myCondition" = TRUE';
Então estou obtendo o resultado da minha consulta:
$result = $connection->prepare($query) or die($connection->error);
$result-> execute();
E, finalmente, imprimo meus resultados:
foreach($result AS $row) { echo var_dump($row);
};
Agora, meu problema é que obtenho uma matriz de dois valores em meu navegador para cada um $row
, embora eu esteja apenas pedindo para retornar id
:
array (2) {["id"] => string (3) "GNQ" [0] => string (3) "GNQ"}
De alguma forma, estou obtendo um segundo valor, novamente com o, id
mas com um identificador de chave diferente (nesse caso, o índice). O que eu estou fazendo errado aqui?
Respostas
Ele retorna o mesmo valor duas vezes por causa do tipo de busca PDO. O padrão é o PDO::FETCH_BOTH
que significa "retornar colunas como indexadas de 0 e com nomes". Se você quiser retornar apenas índices nomeados, basta adicionar o quarto parâmetro ao construtor PDO com uma série de opções (https://www.php.net/manual/en/pdo.construct.php)
$connection = new PDO( 'pgsql:host=' . $host . ';dbname=' . $database, $username,
$password,
[\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_OBJ]
);