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


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

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


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


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

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

ベストアンサー

id:nandedarou No.1

回答回数230ベストアンサー獲得回数34

ポイント35pt

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

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

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

id:tokyosmash

ありがとうございます!

具体的で助かります。

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

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

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

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

2007/03/09 04:06:26

その他の回答3件)

id:nandedarou No.1

回答回数230ベストアンサー獲得回数34ここでベストアンサー

ポイント35pt

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

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

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

id:tokyosmash

ありがとうございます!

具体的で助かります。

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

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

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

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

2007/03/09 04:06:26
id:kn1967 No.2

回答回数2915ベストアンサー獲得回数301

ポイント10pt

回答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言語リファレンス


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

id:tokyosmash

ありがとうございます。

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

2007/03/10 18:18:47
id:nandedarou No.3

回答回数230ベストアンサー獲得回数34

ポイント34pt

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

フィールドは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...

id:tokyosmash

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

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

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

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

2007/03/10 18:19:50
id:kurukuru-neko No.4

回答回数1844ベストアンサー獲得回数155

ポイント11pt

回答#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);
};

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

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

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

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

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