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

PHPについて質問です。

SQLのSELECT文について質問したいことがあるのですが、以下がMYSQLの情報とするとします。

http://oskuni7.sakura.ne.jp/hatena/question/question.htm

この中でid2番目のaddress 東京都を抽出したいときはどのようにすればよろしいでしょうか。
(データ2行目のフィールドがaddressの部分を抜き出すという形で抜き出したいのですが可能でしょうか?)

この後行いたいことですが、HTMLのヴィジュアルに対してこのデータを反映し、また変更できる場所をHTML上に設けてSUBMITボタンを押すとSQLのデータが変わり、そしてSQLで変更されたデータまたHTMLに反映されるという流れを作成したいと考えています。

しかし、このやりかたで行う場合ですがデータが100程あり一個ずつSELECT文を指定していると600個設定しないといけなくなるのですが何か良い方法等はありますでしょうか?

詳しい方おられましたらどうぞよろしくお願いいたします。

●質問者: aiomock
●カテゴリ:コンピュータ インターネット
✍キーワード:データ フィールド ボタン ヴィジュアル 作成
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●50ポイント ベストアンサー

「id2番目のaddress 東京都を抽出」とは、どういう意味でしょうか。


addressカラムの値が "東京都" であるレコードを抽出するという意味なら、以下のような SQL 文になります。(hogeは対象テーブルの名前)

select * from hoge where address="東京都";

idカラムの値が "CL2" であるレコードの address カラムのみを抽出するという意味なら、以下のような SQL 文になります。

select address from hoge where id="CL2";

このやりかたで行う場合ですがデータが100程あり一個ずつSELECT文を指定していると600個設定しないといけなくなるのですが何か良い方法等はありますでしょうか?

対象レコードの抽出は、上記の SQL 文で行いますから、SELECT 文は1回の発行で済みます。

表示内容は、あらかじめ PHP の連想配列に格納しておきます。

次に、変更内容をその連想配列に格納していき、変更があった配列のみを UPDATE 文で DB に反映させます。UPDATE 文は変更レコード1つにつき1回発行することになるので、変更レコードが100あれば、100回発行することになります。600回もSELECT文を実行する必要はありません。

◎質問者からの返答

ご回答ありがとうございます。


2 ● pahoo
●50ポイント

PHPのプログラム上でSELECT文を実行したところ

Resource id #2

というわけの分からない文字がページに表記されます。

エラーではありません。

ご質問のソースではmysql_query関数の戻り値(リソースID)である "Resource id #2" を表示しているので、それは正常です。


ソースの "echo $sql" 以降の部分ですが、それでは select したテーブルの内容が表示されません。下記のようにしてみてください。(このサンプルでは、コメントにあったHTML部分は反映していません)


echo <<< EOF
<html>
<head>
<meta content="text/html;charset=Shift_JIS" http-equiv="Content-Type">
<title>test</title>
</head>
<body>
<table border="1">

EOF;

//SELECT文の実行
$sql = 'select address from TEST where id="CL2";';
if (!$sql) {
 echo "<font color=\"red\">クエリ送信エラー<br>再度登録してください。</font><br> ";
 exit();
}

//データの取り出し・表示
$res = mysql_query($sql);

while ($row = mysql_fetch_array($res)) {
echo <<< EOF
<tr>
<td>{$row["id"]}</td>
<td>{$row["name"]}</td>
<td>{$row["sex"]}</td>
<td>{$row["address"]}</td>
<td>{$row["tel"]}</td>
<td>{$row["information"]}</td>
</td>
</tr>

EOF;
}

//接続の終了・遮断
mysql_close($db_Handle);

echo <<< EOF
</table>
</body>
</html>

EOF;

◎質問者からの返答

ご回答ありがとうございます。


3 ● しろっくす
●100ポイント

まずこちらの本がものすごくおすすめです。

僕もこの本から勉強しました。

http://www.amazon.co.jp/MySQL%E5%85%A5%E9%96%80%E4%BB%A5%E5%89%8...

◎質問者からの返答

ご回答ありがとうございます。購入してみようと思います。

関連質問


●質問をもっと探す●



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