Is worth to know that when you query on multiple tables only the first row with each name is returned.
That is, if you are joining to tables with a column called 'name' you will receive only one field called name in the array and it will correspond to the one on the first table.
Is advisable to allways allias your columns in that stuation.
pg_fetch_assoc
(PHP 4 >= 4.3.0, PHP 5)
pg_fetch_assoc — Lit une ligne de résultat PostgreSQL sous forme de tableau numérique
Description
pg_fetch_assoc() retourne un tableau associatif qui contient la ligne en cours dans le résultat result .
pg_fetch_assoc() est équivalent d'appeler pg_fetch_row() avec PGSQL_ASSOC comme troisième paramètre (qui est optionnel). Cela retournera seulement un tableau associatif. Si vous avez besoin d'indices numériques, utilisez pg_fetch_row().
Note: Cette fonction définit les champs NULL à la valeur PHP NULL.
pg_fetch_assoc() n'est pas significativement plus lente que pg_fetch_row() et elle apporte un confort d'utilisation appréciable.
Liste de paramètres
- result
-
Ressource de résultat de requête PostgreSQL, retourné par pg_query(), pg_query_params() ou pg_execute() (entre autres).
- row
-
Numéro de la ligne à récupérer. Les lignes sont numérotées de 0 en montant. Si l'argument est omis, la ligne suivante est récupérée.
Valeurs de retour
Un tableau à indice associatif (par nom de champ). Chaque valeur dans le tableau est représentée comme une chaîne (string). Les valeurs NULL de la base de données sont retournées NULL.
FALSE est retournée si row excède le nombre de lignes dans le jeu de résultats, n'a plus de ligne disponible ou tout autre erreur.
Historique
| Version | Description |
|---|---|
| 4.1.0 | Le paramètre row devient optionnel. |
Exemples
Exemple #1 Exemple avec pg_fetch_assoc()
<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
echo "Une erreur est survenue.\n";
exit;
}
$result = pg_query ($conn, "SELECT id, auteur, email FROM auteurs");
if (!$result) {
echo "Une erreur est survenue.\n";
exit;
}
while ($row = pg_fetch_assoc($result)) {
echo $row['id'];
echo $row['auteur'];
echo $row['email'];
}
?>
pg_fetch_assoc
02-Oct-2007 06:57
01-Mar-2007 06:28
Here is another way to iterate a resultset and display all columns in very little code... might be faster than a foreach
<?php
print '<table>';
while($row=pg_fetch_assoc($rs2)) print '<tr><td>'.join('</td><td>',$row2).'</td></tr>';
print '</table>';
?>
If you request a row that does not exist, it just fails, rather than simply returning false.
22-Sep-2005 03:34
Note:
PostgreSQL boolean values set to TRUE are returned as the string "t"
PostgreSQL boolean values set to FALSE are returned as the string "f"
25-Feb-2005 04:22
$dbconn3 = pg_connect("host=127.0.0.1 port=5432 dbname=blah user=blah password=blah");
$result = pg_query($dbconn3, "SELECT * FROM Packages");
echo "<HTML><HEAD><TITLE>PostgreSQL Test Page</TITLE></HEAD><BODY>";
echo "<TABLE>";
$pkg = pg_fetch_assoc($result);
foreach ($pkg as $value) {
echo "<TR><TD>$value";
echo "</TR></TD>";
}
echo "</TABLE><P>";
echo "This package's full filename is: {$pkg['name']}-{$pkg['version']}{$pkg['extension']}";
echo "</BODY></HTML>";
For generating tables, this works, and personally I prefer foreach() to while loops because there's no danger of accidentally causing an infinite loop...foreach only works for as long as it has something to work with, and then stops. I thought the echo down the bottom might come in handy, too...took me a bit to find that out.
25-Oct-2003 03:35
An important thing to note (as of PHP 4.3.2):
If you are used to using the "extended" comparision operators (=== and !==) to try to make your code easier to follow visually, this function will return NULL if the provided resource handle is invalid (as opposed to false). ie,
$rs = @pg_query('SELECT * FROM fake_table');
while (false !== ($row = @pg_fetch_assoc($rs)))
{
print_r($row);
}
Obviously you should check to see if $rs === false before you start the while loop, but this example is used to illustrate a potential infinite loop problem if $rs IS false.
21-Jun-2003 05:29
If you are moving between different versions of PHP, this might be handy:
if (!function_exists('pg_fetch_assoc')) {
function pg_fetch_assoc ($result)
{
return @pg_fetch_array($result, NULL, PGSQL_ASSOC);
}
}
07-Jan-2003 02:53
At a glance, the syntax listed at the top of this page doesn't match the example. The PGSQL_ASSOC flag isn't necessary.
