週末PHP初心者です。ここで質問した続きを質問します。

http://q.hatena.ne.jp/1301592655
セッションを使って、ホテルのdetailを取り込んだのですが、
これを今度はデータベースに格納しようと思っています。

例えば、あらかじめテーブル、フィールドなどを以下のように作っておいたとします。
create table hotel(
hotel_no varchar (10) NOT NULL,
hotel_name varchar (50) NOT NULL,
hotel_detail varchar (225) NOT NULL,
PRIMARY KEY (hotel_no)
http://www.yc.tcu.ac.jp/~yamada/doc/mysql/win/0602.html
こんな感じの所を見て、データベースの接続などについては、少し学習しました。

http://q.hatena.ne.jp/1301592655
このセッションページ(追加されたホテルIDだけ?)をデータベースに保存して蓄積出来たら便利だと思っています。
初心者向けに出来るだけ簡単なやり方を説明して頂けませんでしょうか。
ヒントが欲しいのですが、出来れば少しでもいいのでサンプルも付けて頂けたら嬉しいです。

どうか宜しくお願い足します。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/04/09 20:23:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント270pt

【1】MySQLデータベースへの格納

(1)

以下の変数にホテルのdetailを取り込んだものとしてコードを書いています

$hotel_no

$hotel_name

$hotel_detail

接続パラメータとデータベース名は環境にあわせて訂正が必要です

//
// ********** SQL文作成 **********
$sqlStr = "INSERT INTO hotel(hotel_no, hotel_name, hotel_detail) VALUES ('$hotel_no','$hotel_name','$hotel_detail')";
// echo $sqlStr; // SQL文を見たい場合はコメントを外す
//
// ********** MySQLへの書き込み **********
$con = mysql_connect(接続パラメータ) or Die('MySQL接続に失敗しました');
mysql_select_db('データベース名') or Die('データベースオープンに失敗しました');
mysql_query($sqlstr) or Die('データベース書き込みに失敗しました');
mysql_close($con);
echo 'データベースへの書き込み終了'; // 正常終了すれば出てくるはずです

(2)

以下の配列変数にいくつかのホテルのdetailを取り込んだものとした場合(複数のレコードを一括登録する場合)のSQL文作成部分は下記のようになります

$hotel_no[]

$hotel_name[]

$hotel_detail[]

$count = count($hotel_no) - 1;
$sqlStr = "INSERT INTO hotel(hotel_no, hotel_name, hotel_detail) VALUES ('$hotel_no[0]','$hotel_name[0]','$hotel_detail[0]')";
for( $i = 1; $i <= $count; $i++ ) {
    $sqlStr .= ",('$hotel_no[$i]','$hotel_name[$i]','$hotel_detail[$i]')";
}

 

【2】MySQLデータベースからの読み出し

(1)

以下の変数に取り出したいホテルのNOが入っているものとしてコードを書いています

$hotel_no

//
// ********** SQL文作成 **********
$sqlStr = "SELECT * FROM hotel WHERE hotel_no = '$hotel_no'";
// echo $sqlStr; // SQL文を見たい場合はコメントを外す
//
// ********** MySQLへの書き込み **********
$con = mysql_connect(接続パラメータ) or Die('MySQL接続に失敗しました');
mysql_select_db('データベース名') or Die('データベースオープンに失敗しました');
$result = mysql_query($sqlstr) or Die('データベース読み込みに失敗しました');
if (mysql_num_rows($result) == 0) {
    echo '該当するデータがありません';
} else {
    while ($row = mysql_fetch_assoc($result)) {
        echo $row['hotel_no'];
        echo $row['hotel_name'];
        echo $row['hotel_detail'];
    }
}
mysql_close($con);

(2)

以下の変数に取り出したいホテルの名前の一部が入っているものとした場合のSQL文作成部分は下記のようになります

$hotel_name

$sqlStr = "SELECT * FROM hotel WHERE hotel_name LIKE '%$hotel_name%'";
id:hiroponta

あ(・∀・)り(・∀・)が(・∀・)と(・∀・)う!ございました。

大変参考になりました。

少しずつ勉強していきたいと思っておりますので、

今後ともお時間あります時によろしくお願いいたします。

2011/04/06 11:20:56

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません