単純な表を作成
同じ機械で動いている postmaster に接続し、
hosts という database の中の oldhost という表を読んで、
その内容を表形式で表示する。
<html>
<head><title>pg_connects _exec _numrows _numfieds</title></head>
<body>
<center>
<h2>hostname</h2>
<table cellspacing=0 cellpadding=3 border=1>
<?php
$id = pg_connect("", "", "", "", "hosts");
$rc = pg_exec($id, "select * from oldhost");
$rows = pg_numrows($rc);
$fields = pg_numfields($rc);
// ---- generate field names -----
print("<tr>");
for ($f = 0 ; $f < $fields ; $f++) {
print ("<th> . pg_field_name($rc,$f) . </th>");}
print ("</tr>");
// ---- generate each fields ------
for($r = 0; $r < $rows; $r++){
print("<tr>");
for ($c = 0 ; $c < $fields ; $c++) {
print("<td> . pg_result($rc, $r, $c) . </td>");}
print("</tr>"); }
pg_close($id);
?>
</table>
</center>
</body>
</html>
この手続が動くためには、
Web server が動いている権限、例えば apache nobody
などから、PostgreSQL の中が見えるようになっている必要がある。
(p76)
一番安易に試すには、psql の中で
test=# GRANT SELECT ON hosts TO PUBLIC;
CHANGE
などとする。これをしておかないと、次のような字を見てしまう。
PHP Warning: pg_exec() query failed: ERROR: host_description: Permission denied.
|