postgreSQLとPHPの連携でIDが10の行を取得する方法

このQ&Aのポイント
  • postgreSQLとPHPを使用して、IDが10の行を取得する方法について教えてください。
  • 現在、postgreSQLとPHPを連携してスクリプトを組んでいますが、IDが10の行を取得する際に問題が発生しています。
  • 試したコードでは、「、、」と表示されるだけで結果が取得できませんでした。正しい書き方を教えてください。
回答を見る
  • ベストアンサー

postgreSQL + PHPの連携

現在postgreSQLとPHPを使い、 勉強を兼ねスクリプトを組んでいます。 が、早速つまづいてしまいました。。 [ID][名前][年齢]の3つのカラムがあります。 そこからIDが「10」の行を取得したいのですが、 どのように書けばよいのでしょうか? $sql = "SELECT * FROM TAB where(ID = 10)"; $rs = pg_query($cn, $sql); $row = pg_fetch_array($rs); echo "$row[ID]、$row[名前]、$row[年齢]"; 願わくば、と上のように書いたのですが、 「、、」と表示されるだけで…。 ご教示、お願いいたします。

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

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

  • ベストアンサー
  • NINJA104
  • ベストアンサー率43% (133/306)
回答No.1

まずは、 > echo "$row[ID]、$row[名前]、$row[年齢]"; を > echo "$row['ID']、$row['名前']、$row['年齢']"; としてみてください。

yugo042
質問者

お礼

ご回答ありがとうございます。 只今もう一度プログラムを見直したところ、 単純なミスがあり、 修正したところ正常に動きました(汗) すみません、ありがとうございました。

関連するQ&A

  • 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
  • PostgreSQLに書き込み

    今、PHPでPostgreSQLに接続して データを書き込もうとしていますが、 ”ページを表示できません”とエラーが出てしまいます。 <html> <body> <title>PostgreSQL実験</title> <div align="center"> <table border=1> <caption>検索結果</caption> <tr> <td>ID</td> <td>氏名</td> <td>点数</td> </tr> <br> </table> <?php $d_base = pg_pconnect("user=postgres password=grjtf dbname=mytbl"); if($action == post && $sign == '書き込み') { if($id && $name && $score) { pg_query($d_base,"insert into mytbl values($id,$name,$score)"); } } if($action == post && $sign == '点数修正') { if($id && $score) { pg_query($d_base, "update mytbl set score=$score where id=$id"); } } if($action == post && $sign == '一行削除') { if($id) { pg_query($d_base, "delete from mytbl where id=$id"); } } if($result = pg_exec($d_base, "select * from mytbl")) { $row = pg_num_rows($result); for($i = 0; $i < $row; $i++) { $arr = pg_fetch_row($result, $i); echo "<tr>"; for($j = 0; $j < count($arr); $j++) { echo "<td>$arr[$j]</td>"; } echo "</tr>"; } } ?>

    • ベストアンサー
    • 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
  • 次の掲示板PHPにアクセスすると

    <?php echo "<form method=\"post\" action=\"{$_SERVER['PHP_SELF']}\">"; echo "本文:<input type=\"text\" size=\"80\" name=\"contents\">"; echo "<input type=\"submit\" value=\"送信\">"; echo "</form>"; $con=pg_connect("dbname=gomidb user=gomiuser host=127.0.0.1"); $contents=$_POST['contents']; if ($contents) { $contents=pg_escape_string(htmlspecialchars($contents)); pg_query($con,"insert into gomibbs(contents) values('$contents')"); } $rs=pg_query($con,"select * from gomibbs"); while($row=pg_fetch_array($rs)) { print $row['no'].":".$row['contents']."<br>"; } pg_close($con); ?> エラーになります ところが pg_query($con,"insert into gomibbs(contents) values('$contents')"); の所を pg_query($con,"insert into gomibbs(no,contents) values(1,'$contents')"); とすれば一度だけOKです どうすれば良いでしょうか?

    • ベストアンサー
    • 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
  • phpでの再帰関数を利用したツリー表示

    ・やりたいこと 一つのIDの下にいくつの階層があるかカウントする。 コードは既にできているのですが、いざ運用しようとしたときに Fatal error: Maximum function nesting level of '100' reached, > aborting! と出てしまいました。 色々調べた結果、phpでは100を超える再帰呼び出しはできないというのを見つけました。 本当にできないのでしょうか?他にやる方法はあるのでしょうか? php側の設定で何とかなるもんなんでしょうか? ~~~以下DB構造~~~~~~~~~~~~~~~~~~~~~~ id(int) | lid(int) | rid(int) ~~~以下コード~~~~~~~~~~~~~~~~~~~~~~ Class tree_show { var $i_ = 0; var $ar_ = array(); function findid2($colm) { foreach($colm as $value){ $value = $this->findid($value); } } function findid($id) { if(!empty($id)) { $rs = mysql_query("select * from tree_all where id='".$id."'"); $row = mysql_fetch_array($rs); $dim = $row['id']; $this->i_++; $this->addarray($dim); $arr = array($row['lid'],$row['rid']); $this->findid2($arr); } } function printid() { return $this->i_; } function addarray($dim) { array_push($this->ar_,$dim); } function printarray() { return $this->ar_; } } $id= $_REQUEST[id]; $db = mysql_connect(); $sql = "select * from tree_all where id = '".$id."'"; $rs = mysql_query($sql,$db); $row = mysql_fetch_array($rs); $class = New tree_show(); $class->findid($row['lid']); echo $left = $class->printid(); print_r($class->printarray()); echo "<br>"; $class2 = New tree_show(); $class2->findid($row['rid']); echo $right = $class2->printid(); echo "<br>"; print_r($class2->printarray());

    • ベストアンサー
    • PHP
  • Postgrsql8.1.9+PHP5.1.6+apacge2

    すみませんLINUXの初心者です Postgrsql8.1.9+PHP5.1.6+apacge2をインストールしています OSはSentOS5です とりあえずPHPで書いたものをWEBでデーターベースに接続してみて 問題あればエラーが出ると思っていたのですが WEBの画面には何も表示されない状態になってしまいます。 <?php // データベースに接続 $con = pg_connect("dbname=template1 user=postgres password=000"); // クエリの実行 $rs = pg_query($con, "select * from tester"); // 結果セットの行数を取得 $maxrows = pg_num_rows($rs); for ($i = 0; $i < $maxrows; $i++) { $row = pg_fetch_row($rs, $i); echo("$row[0] | $row[1]<br>\n"); } // データベースの接続終了 pg_close($con); ?> HTMLで書いた物はWEB画面には出てくるのですが・・・ とりあえずインストールされてるものを 書いてみました。 postgresql-libs-8.1.4-1.1 postgresql-server-8.1.9-1.el5 postgresql-8.1.9-1.el5 httpd-2.2.3-7.el5.centos php-common-5.1.6-15.el5 php-mbstring-5.1.6-15.el5 php-cli-5.1.6-15.el5 何かが足りないのかconfigの編集が悪いのかまったく わからない状態です PHP・apacheは vi /var/www/html/test.php <?php phpinfo(); ?> を書き込んでWEBを開くとphpinfoのページは開きます。 Postgresqlは単独でテーブルの登録はできます。 解決に必要な情報が要る場合は言っていただければ・・・ ただ初心者なのでコマンドを教えてもらえると助かります すみませんがよろしくお願いします。

  • 訂正版 次のPHPにアクセス

    するとエラーになります ただしあらかじめgomidbで以下をしてます create table gomibbs(no serial primary key,contents text); grant all on gomibbs to gomiuser; <?php echo "<form method=\"post\" action=\"{$_SERVER['PHP_SELF']}\">"; echo "本文:<input type=\"text\" size=\"80\" name=\"contents\">"; echo "<input type=\"submit\" value=\"送信\">"; echo "</form>"; $con=pg_connect("dbname=gomidb user=gomiuser host=127.0.0.1"); $contents=$_POST['contents']; if($contents) { $contents=pg_escape_string(htmlspecialchars($contents)); pg_query($con,"insert into gomibbs(contents) values('$contents')"); } $rs=pg_query($con,"select * from gomibbs"); while($row=pg_fetch_array($rs)) { print $row['no'].":".$row['contents']."<br>"; } pg_close($con); ?> エラーになります ところが pg_query($con,"insert into gomibbs(contents) values('$contents')"); の所を pg_query($con,"insert into gomibbs(no,contents) values(1,'$contents')"); とすれば一度だけOKです どうすれば良いでしょうか?

    • ベストアンサー
    • PHP
  • PHP MySQLでエラーがでてしまいます。

    PHP MySQLからデータを取得したいのですが、以下のエラーが出てしまい原因が分かりません。 詳しい方お願い致します。 <b>Warning</b>: json_encode() expects exactly 1 parameter, 2 given in <b>/home/users/2/***.**-********/web/****************/php/seupPharmacyData.php</b> on line <b>21</b><br /> エラーが出るコードは以下になります。 <?php include "db.php"; $sql = "SELECT * FROM user_data"; $query = mysql_query($sql, $db) or die("クエリの送信に失敗しました。<br />SQL:".$sql); $result= array(); while ($row = mysql_fetch_object($query)) { $result[] = array( 'name1' => $row->name1, 'name2' => $row->name2, 'name3' => $row->name3, 'id' => $row->id, ); } //jsonとして出力 header('Content-type:application/json; charset=UTF-8'); echo json_encode($result,JSON_UNESCAPED_UNICODE); ?>

    • ベストアンサー
    • PHP
  • 配列に格納された値の変更について

    お世話になります。現在下記のように配列に値を入れています $result=pg_query($db,$sql); $status=pg_result_status($result); $data=array(); while($row=pg_fetch_row($result)){ $data1[]=array("namae_id"=>$row[0],"namae"=>$row[1]); } 値を格納してからnamaeの部分の値を変更したいのですが、どのようにしたらいいでしょうか? 例えばnamae_id=4のnamaeの値を太郎から太郎 様という感じで変更したいのです。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう