• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:スクリプト内で頻繁に使うSQL文を簡略化する方法)

スクリプト内で頻繁に使うSQL文を簡略化する方法

このQ&Aのポイント
  • phpで旅館の顧客管理データベースを作成しながら勉強を進めています。
  • 部屋の予約状況を視覚的にわかるようにするための方法を知りたいです。
  • SQL文をユーザー定義関数にまとめて簡略化する方法を教えてください。

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

  • ベストアンサー
noname#87667
noname#87667
回答No.3

既に解決しているようですが、老婆心から一言だけ。 初心者であれば入門書をお持ちのはずですので、サンプルアプリケーションがあるはずです。たいていのサンプルには「common.inc」みたいな共通関数をまとめたファイルが用意されています。そこにこんな関数を作ってあげればよいと思います(「include_once "common.inc";」を忘れずに)。 function searchDB($sql){ $rs = mysql_query($sql); while($result=mysql_fetch_array($rs,MYSQL_ASSOC)){ // raikanテーブルに合わせて配列処理してください。 $result = ・・・; } return $result; }

ricosound
質問者

お礼

なるほど!ご親切にありがとうございます。参考になりました。回答いただきました皆様に感謝いたします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

スマートに実装するならMVCモデルにし、 DAOを作成するのが良いと思います。 後学のためにも、以下のページをご参考に。 http://www.stackasterisk.jp/tech/php/phpMvc02_01.jsp http://www.stackasterisk.jp/tech/php/phpMvc01_01.jsp

ricosound
質問者

お礼

URLを参考させていただきました。 今はまだ理解できない内容でしたが、その存在を片隅に置きいつか活用 したいと思います。まだクラスもユーザー定義関数も自分で作れないので、 順を追って理解していきたいと思います。ご親切にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

よく使う処理はひとまとめにしてユーザー関数をつくっておけばよいでしょう。 PHP5であればクラスを前提につくっていますね? よくつかうcommonクラスなんてつくっておくと、いつでもどこからでも 呼び出せてよいでしょう。

ricosound
質問者

お礼

>よく使う処理はひとまとめにしてユーザー関数をつくっておけばよいでしょう。 自分もまずはそれをやりたいと思っているのですが、うまく処理できません。 もう少し自分で考えてみます。助言ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLクエリを外部から読み込む

    PHPでmysql_query関数を使ってSQLを打つ際、クエリの内容を外部ファイルから読み込むことは可能でしょうか? hoge.sqlというファイルにSQL文を書いて、その内容をmysql_queryに渡したいのですが。

    • ベストアンサー
    • PHP
  • phpでのsql文で変数を使う

    POSTで受け取った文字列を,テーブル名として新規テーブルを作成したいのですが,sql文発行の際の変数の記述方法がわかりません。 ネットや本に書いてある方法は一通りためしたのですが,失敗しましたとなります。 ご教授下さい。 php 5.2.3 apache2.2.4 mysql 5.0.45 <?php require_once("../dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASS); $selectdb = mysql_select_db($DBNAME, $con); $name = $_POST['name']; $sql = "create table $name ( qno int(3), qcontents text(500))"; $rst = mysql_query($sql,$con); if($rst){ echo $name . "を作成しました。"; }else{ echo "データベースの作成に失敗しました。"; } ?>

    • ベストアンサー
    • PHP
  • PHPのforeachでSQL文を処理しても良い?

    PHPのforeachでSQL文を処理しても良いか教えてください。 ・foreachループの中でSQLを書いているのですが、なるべくしない方がよいのでしょうか? (一般的な書き方ではない?) ・MySQLで代替する書き方はあるでしょうか? ・もし代替する書き方がなくてforeach文を使う場合、SQL文が長くてもクエリ数が少ない書き方の方がよいのでしょうか?

    • ベストアンサー
    • MySQL
  • sql文の書き方

    いつもこちらで勉強させていただきます。 環境:mysql5.0 PHP5.1.4 apache 2.0.58 いま画面からパラメータ5受け取りました。 これをもってsql文を書こうとするが必須入力項目ではないため一つずつ判断して書いたら30種類の可能性がでてきてすごく長くなってしまいましたがなんか短縮させるいい方法はありませんか?またこれをファンクションで作り直そうとしたらちょっとうまくいかないのでどなたか教えてもらえませんか?ファンクションで渡すパラメータ($sql?$query?あるいは各パラメータですか? )は何にすればいいか?取得したい検索結果は配列です。ファンクション戻り値を連想配列にすることは可能ですか?ちょっと困っています。 $sql = "SELECT * FROM file_tbl WHERE"; // A だけの場合 if ( $b == "" and $c == "" and $d=="" and $e==""){ $sql = $sql." a='%s' order by b DESC,a"; $query = sprintf("$sql", mysql_real_escape_string($a)); // B だけの場合 }else if( $a == "" and $c == "" and $d=="" and $e==""){ $sql = $sql." b >='%s' order by b DESC,a"; $query = sprintf("$sql", mysql_real_escape_string($b)); // Cだけの場合 }else if( $a == "" and $b == "" and $d=="" and $e==""){ $sql = $sql." c <='%s' order by b DESC,a"; . . . // SQL クエリを実行する $result = mysql_query($query); よろしくご教授願います。

    • ベストアンサー
    • MySQL
  • 作成済みのsql文を自動で実行させる方法

    現在レンタルサーバーにて、不動産検索サイトの簡易的なようなものを運営しています。 phpとmysqlで動かしているのですが、新たに不動産を追加するときはあらかじめsql文作成ページで必要事項を打ち込むことで生成しておいたinsertのsql文を(一度に何行も作成しておいています)、手動で一定時間ごとにphpmyadminに直接放り込んでいます。 このあらかじめ何行も作成してあるinsertのsql文を一定時間ごとに一行一行放り込む作業を自動化したいのですが、どのようにすればいいでしょうか? もしくはこれは根本的にできないことなのでしょうか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • PHP+mysqlでSQL文に文字数制限はありますか?

    基本的な質問で申し訳ありません。 $sql="......";にSQL文を書き $rst = mysql_query($sql,$con); $col = mysql_fetch_array($rst); として($conはmysql_connect関数の結果です) WEBを作成しているのですが、ある程度以上長いSQL文を書くと正常に作動しません。(短いSQLであれば正常に差作動します。)  当然SQL文自体もmysqlで直接実行すると作動するものです。SQL文自体がUNIONや副問い合わせを多用し250行程度になってしまったためかと考えていますが、文字数制限等があるのでしょうか?PHPには変数宣言が無いと認識しているのでどう対処して良いかわかりません。 SQLを分解できないとすると何か良い方法はありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • SQL文2つ実行

    SQL文を2つ実行したい場合、単にmysql_query()を2つ記述すればOkと記憶してましたが、動きませんでした。 なんか間違えてますか?

    • 締切済み
    • PHP
  • SQL whereの中のif文について

    SQLの中にif文を使いたいですが、 うまくいきません。 やはりwhereの中で使えないですか? アドバイスお願いします。 実際のSQL文: $sql = "select * from room";     $sql = $sql . " WHERE ((Keisai = 1)"; if(Chinryou1>0){ $sql = $sql . " and (Chinryou1 <= {$rent1})";     }else if(Chinryou1==0){ $sql = $sql . " and (Chinryou2 <= {$rent1})";    } $sql = $sql . ")"; $sql = $sql . " order by Narabijun desc, Name"; $sql = $sql . ";"; $result = mysql_query($sql, $conn); $num = mysql_num_rows($result);

    • ベストアンサー
    • MySQL
  • SQL文のSyntaxエラー

    お世話になります。 以下のSQL文でSyntaxエラーが出てしまい、考えても考えてもエラーが出続けているので「どこでエラーが発生して、訂正したSQL文」をご教授いただければ幸いです。 $sql="insert into 'post' ("name","comment","created_at") values ('" . mysql_real_escape_string($name) . "','" . mysql_real_escape_string($comment) . "','" . date('Y-m-d H:i:s') . "')"; PHP内でのSQL文です。参考にしたのは技術評論社「パーフェクトPHP」p.190です。 以上、よろしくお願いします。

    • 締切済み
    • PHP
  • sql文のヵウント関数について

    sql文のcountを使い、humanテーブルのレコード件数を取得し出力したいのですが、 Object of class SQLite3Result could not be converted to string in のエラーが出て困っています。 (1)humanテーブルのレコード件数を表示する方法を教えてください。(sql文はうまく動いているのが確認できているので、表示する方法を教えていただきたいです。データベースの接続も正常です。) (2)sqlの出力って配列のみなのでしょうか? <?php // 変数の初期化 $db = null; $query=null; $con =null; $db = new SQLite3("test.db"); $res = $db->query ($sql); // データの取得 $query = "SELECT count (id) from human"; //クエリを実行 $con = $db->query($query); //データの件数を表示する print $con; ?>

    • ベストアンサー
    • PHP