Perché ricevo due volte la stessa colonna nel mio PHP | Query PostgreSQL? [duplicare]
Ho un database Postgres da cui recupero i dati con uno script PHP. All'interno di questo script mi collego tramite PDO:
$connection = new PDO('pgsql:host=' . $host . ';dbname=' . $database, $username, $password);
Quindi, ho una query che dovrebbe elencare solo il id
di ogni istanza:
$query = 'SELECT id FROM my_table WHERE "myCondition" = TRUE';
Quindi ottengo il risultato della mia query:
$result = $connection->prepare($query) or die($connection->error);
$result-> execute();
E infine, stampo i miei risultati:
foreach($result AS $row) { echo var_dump($row);
};
Ora il mio problema è che ottengo un array di due valori nel mio browser per ciascuno $row
, anche se sto solo chiedendo di tornare id
:
array (2) {["id"] => stringa (3) "GNQ" [0] => stringa (3) "GNQ"}
Quindi in qualche modo ottengo un secondo valore, di nuovo con il id
ma con un identificatore di chiave diverso (in quel caso l'indice). Cosa sto facendo di sbagliato qui?
Risposte
Restituisce due volte lo stesso valore a causa del tipo di recupero PDO. L'impostazione predefinita è PDO::FETCH_BOTH
che significa "colonne di ritorno come indicizzate da 0 e con nomi". Se vuoi restituire solo indici con nome, aggiungi il quarto parametro al costruttore PDO con un array di opzioni (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]
);