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)
pg_fetch_row — Pobiera wiersz jako tablicę z indeksami numerycznymi
$wynik
, int $wiersz
) : array
pg_fetch_row() pobiera jeden wiersz
z wyniku wskazanego przez określony identyfikator wyniku
wynik
.
Informacja: Ta funkcja ustala wartość pól NULL na
NULL
.
wynik
Identyfikator wyniku zapytania bazy PostgreSQL, zwrócony przez jedną z funkcji pg_query(), pg_query_params() lub pg_execute() (między innymi).
wiersz
Numer wiersza w wyniku do pobrania. Wiersze numerowane są od zera w górę. Jeśli jest pominięty
albo wynosi NULL
, pobrany zostanie kolejny wiersz.
Tablica (ang. array), indeksowana od zera w górę, z reprezentowaną
każdą wartością jako łańcuch (ang. string). Wartości NULL z bazy danych
są zwracane jako NULL
.
FALSE
jest zwracane, jeśli wiersz
przekracza liczbę
wszystkich wierszy, nie ma więcej wierszy, lub w przypadku każdego innego błędu.
Przykład #1 pg_fetch_row() - przykład
<?php
$polaczenie = pg_pconnect("dbname=wydawca");
if (!$polaczenie) {
echo "Wystąpił błąd.\n";
exit;
}
$wynik = pg_query($polaczenie, "SELECT autor, email FROM autorzy");
if (!$wynik) {
echo "Wystąpił błąd.\n";
exit;
}
while ($wiersz = pg_fetch_row($wynik)) {
echo "Autor: $wiersz[0] E-mail: $wiersz[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).
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>";
}
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.
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);