Note, that when you retrieve some PG boolean value, you get 't' or 'f' characters which are not compatible with PHP bool.
(PHP 4, PHP 5, PHP 7, PHP 8)
pg_fetch_row — Lit une ligne dans un tableau
pg_fetch_row() lit une ligne dans le résultat
associé à l'instance result
.
Note: Cette fonction définit les champs NULL à la valeur PHP
null
.
result
Une instance PgSql\Result, 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
en commençant à 0. Si l'argument est omis ou s'il vaut null
,
la ligne suivante est récupérée.
mode
Un paramètre optionnel qui contrôle la façon dont le array retourné est indexé.
mode
est une constante qui peut prendre les valeurs suivantes :
PGSQL_ASSOC
, PGSQL_NUM
et PGSQL_BOTH
.
En utilisant PGSQL_NUM
, la fonction retournera un tableau avec des indices numériques,
en utilisant PGSQL_ASSOC
, elle retournera seulement des indices associatifs
tandis que PGSQL_BOTH
retournera à la fois des indices numériques et associatifs.
Un tableau de type array, indexé de 0 en montant, avec chaque
valeur représentée comme une chaîne (chaîne de caractères).
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.
Version | Description |
---|---|
8.1.0 |
Le paramètre result attend désormais une instance de
PgSql\Result ; auparavant, une ressource était attendu.
|
Exemple #1 Exemple avec pg_fetch_row()
<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
echo "Une erreur est survenue.\n";
exit;
}
$result = pg_query($conn, "SELECT auteur, email FROM auteurs");
if (!$result) {
echo "Une erreur est survenue.\n";
exit;
}
while ($row = pg_fetch_row($result)) {
echo "Auteur : $row[0] E-mail : $row[1]";
echo "<br />\n";
}
?>
Note, that when you retrieve some PG boolean value, you get 't' or 'f' characters which are not compatible with PHP bool.
I wondered whether array values of PostgreSQL are converted to PHP arrays by this functions. This is not the case, they are stored in the returned array as a string in the form "{value1 delimiter value2 delimiter value3}" (See http://www.postgresql.org/docs/8.0/interactive/arrays.html#AEN5389).
pg_fetch_row is faster than pg_fetch_assoc when doing a query with * as the select parameter. Otherwise, with declared columns, the two are similar in speed.
a way to do this with 2 loops to insert data into a table...
$num = pg_numrows($result);
$col_num = pg_numfields($result);
for ($i=0; $i<$num; $i++) {
$line = pg_fetch_array($result, $i, PGSQL_ASSOC);
print "\t<tr bgcolor=#dddddd>\n";
for ($j=0; $j<$col_num; $j++){
list($col_name, $col_value) =each($line);
print "\t\t<TD ALIGN=RIGHT><FONT SIZE=1 FACE='Geneva'>$col_value</FONT></TD>\n";
}
echo "<br>";
}
Note that the internal row counter is incremented BEFORE the row is retrieved. This causes an off by one error if you try to do:
pg_result_seek($resid,0);
pg_fetch_row($resid);
you will get back the SECOND result not the FIRST.
Get downlines, put them into arrays.
function get_downlines($my_code){
global $link;
$sql = "select user_id, name from tb_user where parentcode = $my_code";
$res = pg_query($link,$sql);
if(!$res){
echo "Error: ".$sql;exit();
}
$num_fields = pg_num_fields($res);
$info_rows = 0;
$num_rows = pg_num_rows($res);
while($arr = pg_fetch_row($res)){
$info_offset = 1;
$info_columns = 0;
while ($info_offset <= $num_fields) {
$info_elements[$info_rows][$info_columns] = $arr[$info_columns];
$info_offset++; $info_columns++;
}
$info_rows++;
}
return $info_elements;
}
I use the following code to assigning query result to an array.
while ($row = pg_fetch_row($result)) $newArray[] = $row[0];
print_r($newArray);