pg_fetch_row
(PHP 4, PHP 5)
pg_fetch_row — Выбирает строку результата запроса и помещает данные в массив
Описание
$result
[, int $row
] )
pg_fetch_row() выбирает одну строку из результата
запроса result
.
Замечание: Эта функция устанавливает NULL-поля в значение
NULL
PHP.
Список параметров
-
result
-
Ресурс результата запроса PostgreSQL, возвращаемый функциями pg_query(), pg_query_params() или pg_execute() (в числе прочих).
-
row
-
Номер выбираемой из результата запроса строки. Нумерация начинается с нуля. Если аргумент опущен или равен
NULL
, берется следующая по очереди строка.
Возвращаемые значения
Численно индексированный массив значений из строки результата запроса.
Индексация начинается с нуля. Значения представляются в виде строк.
Значения NULL базы данных преобразуются в PHP NULL
.
FALSE
, когда row
превышает число строк в
результате запроса, когда строк в результате не осталось, и при
прочих ошибках.
Список изменений
Версия | Описание |
---|---|
4.1.0 |
Аргумент row стал необязательным.
|
Примеры
Пример #1 Пример использования pg_fetch_row()
<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
echo "Произошла ошибка.\n";
exit;
}
$result = pg_query($conn, "SELECT author, email FROM authors");
if (!$result) {
echo "Произошла ошибка.\n";
exit;
}
while ($row = pg_fetch_row($result)) {
echo "Author: $row[0] E-mail: $row[1]";
echo "<br />\n";
}
?>
Смотрите также
- pg_query() - Выполняет запрос
- pg_fetch_array() - Возвращает строку результата в виде массива
- pg_fetch_object() - Выбирает строку результата запроса и возвращает данные в виде объекта
- pg_fetch_result() - Возвращает запись из результата запроса
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения для работы с базами данных
- Расширения для работы с базами данных отдельных производителей
- PostgreSQL
- pg_affected_rows
- pg_cancel_query
- pg_client_encoding
- pg_close
- pg_connect_poll
- pg_connect
- pg_connection_busy
- pg_connection_reset
- pg_connection_status
- pg_consume_input
- pg_convert
- pg_copy_from
- pg_copy_to
- pg_dbname
- pg_delete
- pg_end_copy
- pg_escape_bytea
- pg_escape_identifier
- pg_escape_literal
- pg_escape_string
- pg_execute
- pg_fetch_all_columns
- pg_fetch_all
- pg_fetch_array
- pg_fetch_assoc
- pg_fetch_object
- pg_fetch_result
- pg_fetch_row
- pg_field_is_null
- pg_field_name
- pg_field_num
- pg_field_prtlen
- pg_field_size
- pg_field_table
- pg_field_type_oid
- pg_field_type
- pg_flush
- pg_free_result
- pg_get_notify
- pg_get_pid
- pg_get_result
- pg_host
- pg_insert
- pg_last_error
- pg_last_notice
- pg_last_oid
- pg_lo_close
- pg_lo_create
- pg_lo_export
- pg_lo_import
- pg_lo_open
- pg_lo_read_all
- pg_lo_read
- pg_lo_seek
- pg_lo_tell
- pg_lo_truncate
- pg_lo_unlink
- pg_lo_write
- pg_meta_data
- pg_num_fields
- pg_num_rows
- pg_options
- pg_parameter_status
- pg_pconnect
- pg_ping
- pg_port
- pg_prepare
- pg_put_line
- pg_query_params
- pg_query
- pg_result_error_field
- pg_result_error
- pg_result_seek
- pg_result_status
- pg_select
- pg_send_execute
- pg_send_prepare
- pg_send_query_params
- pg_send_query
- pg_set_client_encoding
- pg_set_error_verbosity
- pg_socket
- pg_trace
- pg_transaction_status
- pg_tty
- pg_unescape_bytea
- pg_untrace
- pg_update
- pg_version
Коментарии
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.
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).
Note, that when you retrieve some PG boolean value, you get 't' or 'f' characters which are not compatible with PHP bool.
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.