¿Por qué obtengo la misma columna dos veces en mi PHP? ¿Consulta PostgreSQL? [duplicar]
Tengo una base de datos de Postgres de la que recupero datos con un script PHP. Dentro de este script me conecto a través de PDO:
$connection = new PDO('pgsql:host=' . $host . ';dbname=' . $database, $username, $password);
Luego, tengo una consulta que debería enumerar el id
de cada instancia:
$query = 'SELECT id FROM my_table WHERE "myCondition" = TRUE';
Entonces obtengo el resultado de mi consulta:
$result = $connection->prepare($query) or die($connection->error);
$result-> execute();
Y finalmente, imprimo mis resultados:
foreach($result AS $row) { echo var_dump($row);
};
Ahora mi problema es que obtengo una matriz de dos valores en mi navegador para cada uno $row
, aunque solo pido regresar id
:
matriz (2) {["id"] => cadena (3) "GNQ" [0] => cadena (3) "GNQ"}
Entonces, de alguna manera, obtengo un segundo valor, nuevamente con el id
pero con un identificador de clave diferente (en ese caso, el índice). ¿Qué estoy haciendo mal aquí?
Respuestas
Devuelve el mismo valor dos veces debido al tipo de recuperación de PDO. El valor predeterminado es lo PDO::FETCH_BOTH
que significa "devolver columnas como indexadas desde 0 y con nombres". Si desea devolver solo índices con nombre, simplemente agregue el cuarto parámetro al constructor PDO con una matriz de opciones (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]
);