PHP+PostgreSQLにおける「pg_exec」と「pg_query」について

このQ&Aのポイント
  • PHP+PostgreSQLにおける「pg_exec」と「pg_query」についての違いと原因について解説します
  • PHP+PostgreSQLにおける「pg_exec」と「pg_query」の違いと使い分けについて説明します
  • PHP+PostgreSQLで発生したエラーについて、「pg_exec」と「pg_query」の使い方を比較して解決策を紹介します
回答を見る
  • ベストアンサー

PHP+PostgreSQLにおける「pg_exec」と「pg_query」について

こんばんわ。 今日からASPをPHPに変えてプログラムを開発しているものです。 ある書籍にSQLを実行する場面で「pg_query」と書いてあってのでそれでやっていましたがエラーが出ていました。 違う書籍に「pg_exec」と記載されていたのでそちらでやるといままでのエラーがうそのように表示されました。 これはPHPまたはPostgresのバージョンか何かが影響しているのでしょうか? また、過去書き込みで「pg_query」を使ったほうがいいとの書き込みがあったのですが・・・。 どうしたものでしょうか・・・お手数をおかけしますがお教えくださいますようお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

pg_query はPHPのバージョン4.2.0以降で使えるようです。お使いのPHPがそれより前のバージョンだったのでは? pg_query の以前のバージョンでの名前が pg_exec() だったようです。PHP4.2.0以降では、互換性確保の為にまだ使えるようですが、pg_query の使用が推奨されています。

参考URL:
http://search.net-newbie.com/php/function.pg-query.html
zenon55
質問者

お礼

ご返答ありがとう御座いました。 なるほど・・・そういうことだったのですね。 うちの環境がおかしいのかと思って不安でしたがこれで解明され安心しております。 ありがとう御座いました。

関連するQ&A

  • 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
  • PHPとPostgreSQL接続 (スキーマ)

    いつもお世話になっております。 現在、PHP(5.3.1)とPostgreSQL(9.2)で開発をしております。 エラーが発生しており大変困っております。 こちらが発生するエラーです。 Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: schema スキーマが見つからないとのことです。 そして、以下がコードとなります。 <?php // PostgreSQL Connect if (!($cn = pg_connect("host=*** port=*** user=*** password=*** dbname=***"))) { die; } // PostgreSQL Select $sql = "select * from t_test.na1"; if (!($rs = pg_exec($sql))) { die; } // PostgreSQL Get Records $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $item = pg_fetch_array($rs, $i); $txt = "${item[1]}"; } // PostgreSQL Disconnect pg_close($cn); ?> 現在のデータベースのスキーマについてですが「na1」と「public」の2つが存在しています。 試しに、na1とpublicのテーブルをまったく同じにして SQLの部分を「select * from t_test」に変更すると「public」側のテーブルが覗けます。 しかし、SQLの部分を「select * from t_test.na1」に変更すると「スキーマが見つかりません」 というエラーが発生してしまいます。 スキーマがあるにもかかわらずこのエラーがでてしまうため原因が分からず困っております。 もしお分かりになる方いらっしゃいましたら、教えていただければと思います。 何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでPostgreSQLに接続できない。

    PHPでPostgreSQLに接続しようとすると、 エラーメッセージが出て接続できません。 コマンドプロンプトからの接続は可能です。 環境:PHP5、Apache2.2、PostgreSQL8.24 全て同じサーバにインストールしています。 ********************************************* コマンドプロンプト ********************************************* >psql -U postgres -h localhost test >Password for user postgres::testpass >Type: \copyright for distribution terms >\h for help with SQL commands >\? for help with psql commands >\g or terminate with semicolon to execute query >\q to quit > > >test=# ********************************************* ↑問題なく接続できます。 ********************************************* ********************************************* PHP ********************************************* <?php $con = pg_connect("host=localhost dbname=test user=postgres password=testpass"); ?> ********************************************* エラーメッセージ 12行目は「pg_connect」のところになります。 Fatal error: Call to undefined function pg_connect() in C:\Program Files\Apache…test.php on line 12 ********************************************* php.ini ファイルはextension=php_pgsql.dll をアンコメントしてあります。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • PHPからのpostgresDBのテーブルに対し『\copy』の実行はできますか?

    $conn = pg_connect("host=xxxxxx user=postgres port=5432 dbname=xxxx"); $result = pg_Exec ($conn, $SQLSTR) ; HTML上から上記のようにphpの関数 pg_Exec を使用して、 copy文を実行したいのですが、うまくできません。 phpからcopy文を実行することはできないのでしょうか? コピー文:"\copy tablename with oid to /tmp/output" ちなみに、$SQLSTRにselectやupdateなどのSQL文をいれると うまくいきます。 使用している環境は、OSがlinuxで、APACHE+php3+postgres6.?? です。

  • PHP + Postgres エラーのハンドリング

    やまとです。 宜しくお願いします。 今、PHP3とPostgres7.2でプログラミングをしています。 ちなみにOSはRedhatLinux7.2です。 PHPから、pg_execでSQL文を実行したり、pg_connectでDBに接続した場合に起きる エラーのハンドリングをしたいのですが出来るのでしょうか? Perlからではやり方は分かったのですが、PHPでのやり方が分かりません。 **************** Perlでのやり方 $db = "testdb"; $conn = Pg::connectdb("$db"); if (PGRES_CONNECTION_OK ne $conn->status){ print "システムエラーです。管理者へお問い合わせください。"; $msg=$conn->errorMessage; print "$msg"; exit; } **************** ↑みたいな感じをPHPでやりたいのですが・・・ ご存知でしたら、ご教授お願いします。

    • ベストアンサー
    • PHP
  • PostgresとPHPが接続できない

    PostgreSQLとPHPがどうあがいてもつながりません。pg_connectのところで接続エラーになります。Postgresの権限、PORTの問題、いろいろ考えたのですが後は、Postgres とPHPのバージョン、ApacheのバージョンとPostgresのバージョンの問題かなと思うのですが、PHPとPostgresをお使いの方でバージョンは、どのバージョンだとつながるか教えていただけないでしょうか?環境はWindowsXPです。

  • 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
  • php,postgreSQLについて

    こんにちわ。初めて投稿します。よろしくお願いします。 現在、postgreSQLで作ったテーブルのデータをつくり、検索フォームで指定した条件(この場合はお店のコード) を、指定先のページに表示させたいのです。 SQLに直接、表示させたいコード番号を入力すれば出るのですが、フォームに入力された値を変数として格納し、SQL文の中に自動にあてはめる方法がわかりません・・。 どうかよろしくお願いします。 phpは4.1です。inp_store_cdは検索フォ-ムでのinput名です。 *表示画面 <?php $conn = pg_connect ("host=localhost port= 5432 dbname=test ); if ($conn == false) { print("データベースに接続できませんでした。"); exit; } $sql = "select * from store_basic where store_cd=$_POST["inp_store_cd"]"; if (!empty($inp_store_cd)) { $sql = $sql. "and sotre_cd =" .$_POST["inp_store_cd"]; } $result = pg_exec($sql); // selectを実行 if ($result == false) { printf("SQL:\"$sql\"の実行に失敗しました。"); exit; } $rows = pg_numrows($result); // 行数を取得 $columns = pg_numfields($result); // 列数を取得 print("<table border>\n"); for ($j = 0;$j < $rows;$j++) { if ($j == 0) { print("<tr>"); for ($i = 0;$i < $columns;$i++) { $str = pg_fieldname($result,$i); // 列名の取り出し print("<th>$str</th>"); } print("</tr>\n"); } print("<tr>"); for ($i = 0;$i < $columns;$i++) { $str = pg_result($result,$j,$i); // データの取り出し print("<td>$str</td>"); } print("</tr>\n"); } pg_freeresult($result); // 検索結果の解放 print("</table>\n"); ?>

    • 締切済み
    • PHP
  • PHPからPostgreSQLのダンプを実行

    PHPからPostgreSQLのダンプを実行したいのですが、 php4.0.6から以下のsystemコマンドを実行してもダンプ採取できなく困っております。 system("pg_dump dbname > filename"); ネットで探してみて、参考になる物もありましたが成功しないので、改めてこちらで質問させてください。 詳細は、、、、 1.Webサイトから実行。 2.Perlだと成功します。 3.リターンコードはブランク(初期化0で、systemコマンド実行後、ページに表示して見ると表示なし。) 3.suコマンドでチェンジしても同様の結果。 ※ちなみに、Postgres接続、SQL発行などは成功しております。

    • 締切済み
    • 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

専門家に質問してみよう