• 締切済み

PG_QUERY

PostgresSQL8.1、APACHE2.2、PHP5の環境でWEBデーターベースを作っています。データーベースは作成できたのですが、PG_QUERYなどを使って、フィールド名や、実際のデータなどを、元のテーブルのままに罫線付きでブラウザに表示させる方法としては、何か雛形のような書式があるのでしょうか? 教えていただきたいのは、特にPg_fetch,pg_arrayなどを使う箇所です。

  • teo98
  • お礼率27% (68/244)

みんなの回答

noname#30334
noname#30334
回答No.1

pg_fetch_arrayは使っていませんが、汎用性があるスクリプトですので、よろしければお試し下さい。 //DB接続($cnDB)は、省略 $strSQL = "SELECT * FROM hoge"; $rs = pg_query($cnDB, $strSQL); $intFNum = pg_num_fields($rs); $intRNum = pg_num_rows($rs); print ("<TABLE border=1>"); if ($intFNum > 0) { print ("<TR>\n"); for ($i=0; $i<$intFNum; $i++) { print ("<TH>".pg_field_name($rs, $i)."</TH>\n"); } print ("</TR>\n"); } if ($intRNum > 0) { for ($j=0; $j<$intRNum; $j++) { print ("<TR>\n"); for ($i=0; $i<$intFNum; $i++) { print ("<TD>".pg_fetch_result($rs, $j, $i)."</TD>\n"); } print ("</TR>\n"); } } print ("</TABLE>");

関連するQ&A

  • pg_queryは使えるが、pg_query_paramsが使えない

    pg_query_params関数を使いたいのですが使えません。 PHPインストール時に--with-pgsqlの指定をいれており、pg_query関数は問題なく使えております。 モジュールに不足があったのかと思い、extensionで追加インストールしてみましたが変化ありませんでした。(extensionの設定は問題なく有効になっていると思います。) 環境は以下のとおりなのですが、心当たりがあればご指摘いただけないでしょうか。 Linux Apache2.0 PHP5.2.10 PostgreSQL8.0 ■pg_query_params関数について:http://php.net/manual/ja/function.pg-query-params.php

    • 締切済み
    • PHP
  • pg_queryの結果を2回とりだすことは無理?

    $rs=pg_query($con,"select * from gomibbs"); while($row=pg_fetch_array($rs)) { print "{$row['no']}:{$row['contents']}<br>"; } において もう一度$rsの結果を取りだすにはどうしたいいのでしょうか?

    • ベストアンサー
    • PHP
  • pg_exec()、pg_result()は、使わない方が良いのか?

    去年の7月から、PHPを使っています。 そこで、初めて買った本の中で、pg_exec()、pg_result()を使ってPostgreSQLを使うサンプルプログラムが載っていました。 それを使って、webソースをくんできたのですが、ふと技術評論社のPHPのポケットリファレンスなどを見たら、pg_exec()、pg_result()が載っていません。(汗) googleなどで検索すると、また使っているようですが、将来性を考えると、pg_query()、pg_fetch_xxxx()などにソースを直しておいた方が良いのでしょうか? また、pg_fetch_xxx()の中で、pg_fetch_objectが、良いのでしょうか?

    • ベストアンサー
    • PHP
  • pg_queryで変数の取り扱い方

    環境はxp、apache2、php5、Postgresql8.2です。 ただ今PHPとPostgresqlの勉強をしています。 pg_queryで変数の値をINSERT処理を行いたいと 以下のようにしてみましたが うまくいきません。 問題は VALUES('$number','$name')" の部分だと思うのですが 変数はどのように書いたらいいのかが分かりません。 numberはint型 nameはtxst型です ご教示して頂けたら幸いです。 ---------- if($_POST['action'] && $_POST['sign'] == 'kaki') { if($_POST['number'] && $_POST['name']) { pg_query($d_base,"INSERT INTO aas(number,name) VALUES('$number','$name')"); print $_POST['name']; } else { print "書き込めませんでした。"; } }

  • pg_queryでinsert処理が出来ない

    環境はxp、apache2、php5、Postgresql8.2です。 1台のPCをサーバ&クライアントにしています。 ただ今PHPとPostgresqlの勉強をしています。 phpiniの文字コードの設定 PHPプログラムをShift_JISで保存し、ブラウザへEUC-JPで出力する csvデータを「Book1」読み込んで、 bbというテーブルに格納するために 以下のようにしましたが エラーになってしまいます。 ご教示して頂けたら幸いです。 --------------------------- if($_POST['action'] && $_POST['sign'] == 'up') { //ファイルを開く $fd = fopen ("c:\Book1.csv", "r"); //データを読み込む while (!feof ($fd)) { //「,」区切りでデータを分割 $line = split(",",fgets($fd, 50)); //クエリの実行 $sql = "insert into bb (syain,name,buka) values ('\{$line[0]}\','\{$line[1]}\',{$line[2]})"; pg_query($d_base,$sql); } } --------------------------- 「Book1」の内容 001,山田,100 002,佐藤,200 003,斉藤,300 ・ ・ ・ --------------------------- エラー内容 Warning: pg_query() [function.pg-query]: Query failed: ERROR: invalid byte sequence for encoding "EUC_JP": 000002 HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". in C:\aa.php on line 48 山田

    • ベストアンサー
    • PHP
  • pg_queryのエラー

     テキストボックスに入力された単語をスペースで区切って、それをSQL文に入れてデータベースを検索するプログラムを書いたのですが、ある特定のキーワードを入力すると以下のようなエラーが出ます。 Warning: pg_query(): Query failed: ERROR: invalid byte sequence for encoding "SJIS": 0x9125 in /**パス**/search.php on line 58 ↑は「早期」というキーワードを入れて検索した時に出たものです。DBには「早期終了」というデータがあるのですが、この場合は引っ掛かりません。「終了」というキーワードで検索すると出てきます。 クエリに失敗したというのは分かるんですが、SJISが出てくる意味が分りません。 文字コードの問題でしょうか? これはどうやったら解決できるんでしょうか?

    • 締切済み
    • PHP
  • データベース(PostgreSQL)のフィールドとpg_field_num()について

    現在私は、あるシステムを構築しています。 開発言語にPHP、データベースにPostgreSQLを使用しています。 そのシステムの中で、データベース(テーブル)にアクセスし、指定したカラムの保持しているデータを更新する処理をしているところがあります。 各カラム名は、システム使用者のIDとなっています。 実際のスクリプトとしては、 ************************************************ $id = (使用ユーザのID); $rs = (テーブルをセレクトした際のリソース); $row = pg_fetch_row($rs); $new_data = $row[pg_field_num($rs, $id)] + 1; // 該当する値をインクリメント ************************************************ という感じになります(問題箇所のみ)。 IDには大きく分けて二種類あり、  ・数字だけのもの  ・数字が英字混ざったもの があります。 上記のスクリプトで、数字だけのIDでは正常に動作するのですが、数字と英字が混ざったものは正常に動作しません。 pg_field_num($rs, $id)の値を出力してみると、-1 が出ます。 しかし、指定しているカラムはしっかり存在しています。 念のため、pg_field_name($rs, (該当するカラム番号))を出力してみても、出力されたカラム名は正しいです。 即ち、 ************************************************ $new_id = pg_field_name($rs, (該当するカラム番号)); $test = pg_field_num($rs, $new_id); ************************************************ としても、$testの値は -1 となります。 -1 が出力されると言う事はエラーが出力されているという事なので、pg_result_error等でエラーを出力してみても、エラーはありません。。。(もしかしたら、正しくないやり方をしてるのかもしれませんが) 現状では手の施しようがありません。 どなたか、ご教授お願いします。

    • 締切済み
    • PHP
  • ACCESS2003クエリの結合した表示形式が

    ACCESS2003でクエリを作成しました。各テーブルのフィールドを結合したのですが 表示形式が思ったようになりませんでした。 【Aテーブル】 フィールド:学部NO データ型:数値型 書式:00 【Bテーブル】 フィールド:学科NO データ型:数値型 書式:00 【ABクエリ】 フィールド:学籍NO:[Aテーブル]![学部NO]&[Bテーブル]![学科NO] 【ABクエリ】の結果が数字が4桁表示されません。 (例) 0101 と表示してほしいのですが、   11  と表示されます。 各テーブルでは、01と表示されるのですが・・・。 宜しくお願いします。

  • PHPのpg_pconnect関数について

    WindowsにApache2・PHP5・Postgresqlをインストールしました。 PHPは動くのですが、pg_pconnectのようなpostgresql関係の関数が動きません。 具体的には Call to undefined function pg_pconnect() というエラーがでます。 php.iniのextension=php_pgsql.dllの箇所を有効にしたのですが、それでもエラーが出ます。

    • 締切済み
    • PHP
  • pg_prepareが使用できない(Undefined function

    お世話になります。 現在PHPとPostgreSQLでアプリケーションを作成しております。 データベースのセキュリティのために、pg_prepare関数を使い たいのですが、以下のようなエラーが出てしまいます。 Fatal error: Call to undefined function pg_prepare() in ... 該当ソースコードとバージョンは以下のとおりです。 ///ソース $con = pg_connect("user = $DBUSER password = $DBPASSWORD dbname = $DBNAME"); $rst1 = pg_prepare($con, "query", 'SELECT * FROM test WHERE name = $1'); $con = pg_close($con); ///バージョン Apache 2.0.59 PHP 5.1.6 PostgreSQL 8.1.4 何か原因で考えられることはあるでしょうか。 pg_escape_stringもまったく同じエラーが起きてしまい頭を抱えています。お手数かけますがよろしくお願いします。

    • ベストアンサー
    • PHP