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 — Holt einen Datensatz als numerisches Array
$result
, int $row
= ?
) : array
pg_fetch_row() holt einen Datensatz der
Ergebnismenge, die durch die Ergebniskennung
result
bezeichnet wird.
Hinweis: Diese Funktion setzt NULL-Felder auf den PHP Wert-
null
.
result
PostgreSQL Verbindungskennung, die (unter anderem) von den Funktionen pg_query(), pg_query_params() oder pg_execute() zurückgegeben wurde.
row
Die Nummer der Zeile des Abfrageergebnisses, die geholt werden
soll. Die Nummerierung beginnt bei 0. Fehlt dieser Parameter oder ist er null
, so wird
jeweils die nächste Zeile geholt.
Die gelesene Zeile des Abfrageergebnisses (Datensatz) wird als
numerisches array, beginnend bei Offset 0, zurückgegeben,
das die Spaltenwerte in den Arraykomponenten enthält. Diese werden als
string repräsentiert, Nullwerte der Datenbank
(NULL
) werden als null
zurückgegeben.
Bei einem Fehler oder wenn der Parameter row
größer als die Anzahl der Zeilen im Abfrageergebnis ist, oder wenn
kein Datensatz mehr gelesen werden kann, wird false
zurückgegeben.
Beispiel #1 pg_fetch_row() Beispiel
<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
echo "Konnte keine Verbindung aufbauen.\n";
exit;
}
$result = pg_query($conn, "SELECT author, email FROM authors");
if (!$result) {
echo "Ein Fehler ist aufgetreten.\n";
exit;
}
while ($row = pg_fetch_row($result)) {
echo "Autor: $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);