人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL/PHPに関する質問です。

MySQLに以下のようなテーブルがあります。
テーブル名:sample_table
フィールドは以下
・menseki
・category

このテーブルから以下の事をしたいです。


categoryの値が「東京都」のレコードの、mensekiの値をPHPの変数配列に入れていく


データベースへの接続は出来るので、SQL文とPHP配列代入スクリプトのみを教えてください。

●質問者: tokyosmash
●カテゴリ:コンピュータ インターネット
✍キーワード:MySQL PHP SQL スクリプト データベース
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● nandedarou
●35ポイント ベストアンサー

応用がきくように、全フィールドのデータを取り出すsqlにしておきますね。

$sql = "SELECT * FROM mytable WHERE category='東京都'";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
 $data[] = $row['menseki'];
}

以上で、categoryの値が「東京都」のレコードの、mensekiの値が配列$dataに保存されます。

◎質問者からの返答

ありがとうございます!

具体的で助かります。

こっちの世界はちんぷんかんぷんでして・・。

PHPとMySQLで実現したい一連の流れがありまして、また新しい質問させていただいてます。

もしお暇でしたらお付き合い頂ければと思います^^

ありがとうございました。


2 ● kn1967
●10ポイント

回答1/の内容を読んだ時点で書き加えられそうなものはなかったので静観していたのですが、

php+MySQL に不慣れなようなので以下のページはブックマークしておくことをお勧めします。


■phpマニュアル

http://www.php.net/manual/ja/ref.mysql.php

↑phpに備わっているMySQLを扱うための関数一通り載ってます。目次の欄を参照してみてください。

http://www.php.net/manual/ja/function.mysql-fetch-assoc.php

↑上のページ内の目次欄からmysql_fetch_assocを選択すると出てくるページです。

1/ で回答いただいた内容とmysql_fetch_assocの例題を見比べると、より理解が深まるでしょう。


■MySQLマニュアル

http://dev.mysql.com/doc/refman/4.1/ja/index.html

↑ リファレンス

http://dev.mysql.com/doc/refman/4.1/ja/reference.html

↑ SQL言語リファレンス


以上、余計なお世話でした。。。

◎質問者からの返答

ありがとうございます。

早速ブックマークさせていただきました。


3 ● nandedarou
●34ポイント

テーブル名、違ってましたね。ごめんなさい。ついでに、ちょっと改造してみました。参考にして下さい。

フィールドはcategory、shikuchouson、mensekiだとします。

例えば、データがつぎのような場合を想定しています。

東京、新宿、1000

神奈川、横浜、2000

東京、品川、3000

// ユーザの入力から、'東京'などを受け取る場合
// $category = $_POST['category'];
// とりあえずは、
$category = '東京';

// mysql_real_escape_stringでエスケープ
$category = mysql_real_escape_string( $category );

// sprintfを使うのがお勧め
$sql = sprintf( "SELECT * FROM sample_table WHERE category='%s'", $category );

// SQLを実行
$result = mysql_query($sql);

// 一行ずつ$rowに入るので、whileでループして$dataに配列として格納
while ($row = mysql_fetch_assoc($result)) {
 $data[] = $row;
}

// 表示の例
foreach( $data as $key => $value ){
 print("{$value['category']}の{$value['shikuchouson']}の面積は、{$value['menseki']}平方メートルです。");
 print('<br>');
}

次のような表示になります。


東京の新宿の面積は、1000平方メートルです。

東京の品川の面積は、3000平方メートルです。

http://au.php.net/manual/ja/function.mysql-real-escape-string.ph...

◎質問者からの返答

具体的に、かつ丁寧にありがとうございます。

ようやく完璧にできました。

続いて次のステップに進んでみようと思います。

そちらでも回答頂いているようなので、ぜひぜひ参考にさせて頂きます。


4 ● kurukuru-neko
●11ポイント

回答#1があるので 少し細かく

# 検索結果
$data = array();
$data_num=-1;

# 検索条件
$areacode = '東京都';

# SQL生成
$query = sprintf("SELECT menseki from sample_table from category='%s'",mysql_real_escape_string($areacode));

# 検索実行
$result = mysql_query($query);
if( !$result ) {
 # エラー処理
} else {
 # 結果の件数を保存
 $data_num = mysql_num_rows($result);
 while ($row = mysql_fetch_assoc($result)) {
 $data[] = $row['menseki'];
 };
 # 結果が多い場合又はリソースを節約する場合
 mysql_free_result($result);
};
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ