- ベストアンサー
クラス定義によるDBから名前を取得する方法
- クラス定義を使ってDBから名前を取得する方法を学びたいです。
- クラスを使ってPostgreSQLのデータベースから店名を取得する方法を教えてください。
- クラスを使って店コードを入力すると、DBから店名を取得するプログラムを作りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
何度も申し訳ありません! いままで出てきた pg_exec()関数ですが、現在は、 pg_query() を使用することが推奨されています。 用法は、pg_exec()もpg_query()も変わりないようですので、先にあげたの例等のpg_exec()は、pg_query()に読み替えてください。 ごめんなさい!!
その他の回答 (2)
- J_ANBI
- ベストアンサー率48% (24/49)
データベースから値を取得する処理は、以下のステップを踏みます。 ・pg_connectで、データベースに接続する。 ・SQL文(データを取得する命令)を作成する。 ・pg_exec()でSQL文を実際に実行する。 ・pg_fetch_array等でデータを取得する。 例えば、変数$aaaに店コードが入っているとして、 <?php $conn = pg_connect ("host=localhost port= 5432 dbname=test"); //↑データベースに接続します。 $sql="select store_name from store_basic where store_cd=" . $aaa; //↑SQL文を作ります。 $execid = pg_exec($conn,$sql); //↑SQL文を実行します。 $TblData = pg_fetch_array($ExecId,0); //↑実行結果の先頭行(0行目)を取得します。 echo($TblData[0]); //↑取得した実行結果の先頭列(0列目)を表示します。 ?> のようになります。 これは、ほんの一例ですので、詳しくは、参考URLのマニュアルをご覧になってください。 次に、取得する処理をどこに書くのか? という問題ですが、「ここに書くべきだ」という答えはありません。 ただ、 >店コード(store_cd)を入力すると、名前(store_name) >をDBから取ってくるクラスを作りたいのですが、 ということなので、pg_exec以下をgetName関数内に記述するとわかりやすいかと思います。 ただし、その場合には、 getName関数は、引数として、pg_connect()の結果を取得するか、 クラスにメンバ変数を用意して、そこにあらかじめにpg_connect()の結果を代入しておくなどして、 getName関数の中から、pg_connect()の結果にアクセスできるようにしておく必要がありますね。 と、いった感じでいかがでしょう?
- J_ANBI
- ベストアンサー率48% (24/49)
意図とまったく違う答えでしたら、ご容赦ください。 実行して確かめたわけではないので、絶対とはいえませんが、文法的にはほぼあっているようです。 しかし、 >店コード(store_cd)を入力すると、名前(store_name) >をDBから取ってくるクラスを作りたいのですが、 ということですが、DBから値をとってくる処理はどこにあるのでしょう? getName関数で、SQL文を作ってはいるようですが、それを実行する文が見当たらないようですが・・・。 ・pg_connectでDBに接続して、 ・pg_execでSQLを実行して、 ・pg_fetch_array等でデータを取得する 処理が必要かと思います。 その後、取得した値を確実にreturnするなどして、呼び出した側に値をもどせるようにする必要もあるかと思います。 なお、私の洞察力不足かも知れませんが、「どう」うまくいかないのかを書いて頂ければ、 もう少し的確な答えを出すことができるのではないかと思います。
補足
J_ANBIさん、さっそくの回答ありがとうございます。 すみません、説明不足でした。 先ほどのクラスを class_code.php として、 以下のようにコード番号を入力すると、名前を引っ張って きたいのですが、引っ張ってくることができないのです。 説明不足でお手数かけて申し訳ありません。 また、・pg_execでSQLを実行して、 ・pg_fetch_array等でデータを取得する という操作もしていませんでした。 この場合クラスとフォームどっちに記述してよいかわかりません・・。よろしければご教授願いたいのですが・・ <HTML> <HEAD> <TITLE>コードクラス</TITLE> </HEAD> <BODY> <?PHP $conn = pg_connect ("host=localhost port= 5432 dbname=test"); require_once("class_code.php"); $objCode = new clsCode; //コードの指定 $strCode = $_POST["cd"]; $strCode = (string) $objCode->getName((string) $strCode); print "店の名前:$strCode<BR>"; // いらなくなったらデストラクタで捨てる $objCode->Destroy(); unset($objCode); ?> <form action="code.php" method="POST"> 店コード: <input type="text" name="cd"> <br> <input type="submit" value="調べる"> </form> </BODY> </HTML>
お礼
J_ANBIさん、何度もありがとうございました! また何かありましたらよろしくお願いします。