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>';
?>
pg_fetch_assoc
(PHP 4 >= 4.3.0, PHP 5)
pg_fetch_assoc — 行を連想配列として取得する
説明
array pg_fetch_assoc ( resource $result [, int $row] )pg_fetch_assoc() は、取得した行(レコード)を 保持する連想配列を返します。
pg_fetch_assoc() は、オプションの第 3 パラメータに PGSQL_ASSOC を指定して pg_fetch_array() をコールするのと同じです。連想配列のみを返します。もし数値添字の配列が 必要な場合は pg_fetch_row() を使用してください。
注意: この関数は、 NULL フィールドに PHPの NULL 値を設定します。
pg_fetch_assoc() は、 pg_fetch_row() に比べてきわめて遅いというわけでは 「ありません」。そして、きわめて簡単に使用できます。
注意: row は、PHP 4.1.0 でオプションになりました。
パラメータ
- result
pg_query(), pg_query_params() あるいは pg_execute() から返される PostgreSQL の クエリ結果リソース。
- row
取得する行番号。最初の行は 0 です。指定されなかった場合、 次の行が取得されます。
返り値
連想配列(フィールド名をキーとする)を返します。 配列の各要素の値は文字列です。 データベースの NULL 値は、NULL として返します。
row が結果の行数より大きい場合・行が存在しない場合 、そしてそれ以外のエラーが発生した場合は FALSE を返します。
例
例 1873. pg_fetch_assoc() の例
<?php
$conn = pg_connect("dbname=publisher");
if (!$conn) {
echo "An error occured.\n";
exit;
}
$result = pg_query($conn, "SELECT id, author, email FROM authors");
if (!$result) {
echo "An error occured.\n";
exit;
}
while ($row = pg_fetch_assoc($result)) {
echo $row['id'];
echo $row['author'];
echo $row['email'];
}
?>
参考
| pg_fetch_row() |
| pg_fetch_array() |
| pg_fetch_object() |
| pg_fetch_result() |
pg_fetch_assoc
02-Mar-2007 02:28
If you request a row that does not exist, it just fails, rather than simply returning false.
22-Sep-2005 10: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 12: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 10: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.
22-Jun-2003 12: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 10: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.