mysql_queryで取得したデータと外部のテキストファイルをマッチングする方法

このQ&Aのポイント
  • mysql_queryを使って取得したデータと外部のテキストファイルをマッチングする方法について説明します。
  • 具体的には、mysqlからデータを取り出し、テキストファイルと共通項を使ってマッチングさせて表示する方法について説明します。
  • また、マッチングの方法や限界についても紹介します。
回答を見る
  • ベストアンサー

mysql_queryで取得したデータと外部のテキストファイルをマッチングしたい

mysqlに次のようなテーブルがあります。 テーブル名 : meibo id | name 1 | 阿部 2 | 佐藤 3 | 橋本 そして次のようなテキストファイルがあります。 ファイル名 : blood.txt 1,A 2,B 3,O テーブルのidとテキストファイルの数字を共通項として連携したいのですが可能でしょうか? 具体的には、phpファイルでmysqlからデータを取り出し、blood.txtとマッチングさせて表示したいと思っています。 例えば、次のように記述箇所がある場合、どこでblood.txtとマッチングすることができるでしょうか? $rs = mysql_query("select * from meibo ;"$con); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ echo $rec['name']; //ここに血液型を表示させたい } それとも、そもそもこのようなことはできないのでしょうか? よろしくお願いします。

  • 240t
  • お礼率60% (21/35)
  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

blood.txtを $blood=Array(1=>'A',2=>'B',3=>'C'); となるよう配列に読み込んでおき $rec['id']にidが入るのでそれをもとに echo $blood[$rec['id']]; で表示できるでしょう ていうか、血液型はSQLのテーブルで管理するのが普通の流れでしょうけど

240t
質問者

お礼

どうもありがとうございました。 おっしゃるとおり、SQLにデータを流して管理することにしました。

関連するQ&A

  • 構文の省略について

    下記をもっと省略(短い構文で)して書きたいのですが、どのようなやり方があるでしょうか。 testというテーブルから指定したidのnameを取り出して並べたいだけなのですが、このような長々としたものしか思い浮かびませんでした。 <?php $n1 = 1; $n2 = 2; $n3 = 3; $rs1 = mysql_query("select * from test where id = '$n1';",$conn); $rec1 = mysql_fetch_array($rs1, MYSQL_ASSOC); echo $rec1['name']; echo <br>; $rs2 = mysql_query("select * from test where id = '$n2';"); $rec2 = mysql_fetch_array($rs2, MYSQL_ASSOC); echo $rec2['name']; echo <br>; $rs3 = mysql_query("select * from test where id = '$n3';"); $rec3 = mysql_fetch_array($rs3, MYSQL_ASSOC); echo $rec3['name']; mysql_free_result($rs1); mysql_free_result($rs2); mysql_free_result($rs3); mysql_close($conn); ?>

    • ベストアンサー
    • PHP
  • select構文について

    テーブルを結合して各カラムを出力したいのですが、両方のテーブルに同じカラム名があった場合どのように処理したら言いのでしょうか? 次のようにやってみたのですが、テーブル名をASで置き換えるとうまくいかないのでしょうか。 $rs = mysql_query("select u.name,a.name, from user AS u LEFT JOIN address AS a ON u.id=a.id ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $username = $rec['u.name']; $officename = $rec['a.name']; echo '$username'; echo '$officename';

    • ベストアンサー
    • MySQL
  • テキストファイルからMySQLに書き込む

    合計12フィールドのテキストファイル(ファイル名:_student.txt)をアップロードし、そのテキストファイルをMySQLのファイル(テーブル名:m_student)に全件書き込もうとしています。(レコードの追加、レコード数は1000件程度が想定されています) アップロードまでは出来たのですが、 テキストファイルを読み込み、 →MySQLのファイル(テーブル名:m_student)に書き込む、 部分が思いつきません。 参考となるサイト、プログラムなどありましたら、ご教授いただけると幸いです。

    • ベストアンサー
    • PHP
  • phpとmysqlでデータの一覧表示をしたいと思っています。

    phpとmysqlでデータの一覧表示をしたいと思っています。 ずらーっと並べるだけでなく、1ページに100件した場合には 10行毎に<hr>や<br>などのタグを挿入して間隔を空けたいのですが どのようにしたらいいのか悩んでいます。 現在は下記のようにLIMITで何度もqueryを発行しています。 できれば1回のqueryで処理したいのですが 他にどのような方法があるでしょうか。 $rs = mysql_query("select * from data order by id desc LIMIT 0,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } $rs = mysql_query("select * from data order by id desc LIMIT 10,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } $rs = mysql_query("select * from data order by id desc LIMIT 20,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • mysql_fetch_arrayとテンプレートの使い方

    データベースからランダムに取り出した3つのデータがあります。 取り出したデータにはそれぞれid、name、ageのデータが入っています。 $rs = mysql_query("select * FROM table order by Rand() LIMIT 0,3;",$con); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $tpl->assign(array( id => $rec[id], name => $rec['name'], age => $rec[age] )); } これだと1種類のデータが3つ連続して表示されてしまいました。 3種類のデータを全部表示するにはどのようにしたらよいのでしょうか? テンプレート(?)の使い方がよく分かっていないので検討違いのことをしている気がしますがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • selectであるデータを検索した結果のリターンコードを取得するには?

    以下のようなコードをPHP内で実行しています。 以下の例は、MySQLテーブル'test_tbl'の'id'というフィールド内に'500'というデータが存在した場合、そのデータを取り出してecho文で表示させるようにしたものです。 検索した結果データが存在しなかった場合、データが存在していないということを、リターンコードで判断したいと思っています。 リターンコードはどうやって見ることができますか? '$rs'にリターンコードが入ってくるのでしょうか? ('Resource id #3'のような値が返ってくるようですが) リターンコードとその意味の一覧とかが、どこかのサイトにあればURLを教えていただければ助かります。 よろしくお願い致します。 ------------------------------------------------ <?php  if( ! $conn = mysql_connect( 'localhost', 'user_id', 'password') ){   die( 'MySQL接続失敗' );  }  mysql_select_db( 'test_db', $conn );  $rs = mysql_query("SELECT id FROM test_tbl WHERE id = 500", $conn);  $rec = mysql_fetch_array( $rs, MYSQL_ASSOC );  echo $rec['id'];  mysql_free_result( $rs );  mysql_close($conn); ?>

  • 2つのテーブルを結合する条件

    現在、MySQLを使用しており2つのテーブルの結合条件がわからないので教えてください。 name_masterとmeiboの2つのテーブルがあります。 meiboとname_masterを結合させてname_idとname_id2が日本語に置き換わった状態で 取得させたいと思っています。どのようにwhere句の条件を作成すればよいでしょうか。 取得する項目のイメージとしては以下の3つが取得できるようにしたいです。 「meibo.no, meibo.name_idの日本語, meibo.name_id2の日本語」 【name_masterテーブル】 id name 1  ポチ 2  タマ 3  ミケ 4  ハチ 5  タロウ 【meiboテーブル】 no  name_id  name_id2 1    3     1 2    4     2 3    5     3

    • ベストアンサー
    • MySQL
  • mysql データ登録

    phpにてmysqlにデータ登録の流れを作っているのですが、わからないことがあり投稿しました。 簡単に流れを説明しますと mysqlのテーブル(テーブル名member)の構成は id | name だとして phpのフォームで <input type="text" name="name1" value=""> <input type="text" name="name2" value=""> <input type="text" name="name3" value=""> というものを作っています。 ここでフォームのname1、name2、name3をそれぞれ入力したときにmysqlに登録されるのですが、 mysqlのなかに id | name 1 | A 2 | B 3 | C としたいのですが、下記の記述ではできません。 (INSERT INTO `member` SET `name`='$name1',`name`='$name2',`name`='$name3') エラー文はColumn 'name' specified twiceと表示されます。 レコード数は増やしたくないので、何か方法が御座いましたら教えていただけないでしょうか? まだ、PHPを勉強し始めたばかりで困っています。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • MYSQLのクエリのデータをテキストエリアにセットしたい。

    いつも拝見し、勉強させていただいております。 MYSQLを使用してメールフォームの入力支援に郵便番号から それぞれ都道府県、市区郡、住所、住所1とテキストエリア内に表示させたいのですがうまく表示されません。 ソースは以下の通りです。 //フォームの箇所のソース <input type="text" name="addNo" value="<?= $inpadd ?>" size="15"> <input type="text" name="address" value = "<?= $ken ?>" size="20"> <input type="text" name="city"value = "<?= $city ?>" size="40"> <input type="text" name="address" value = "<?= $address ?>"size="40"> MYSQLの結果表示のソース //データベースに問い合わせ $query ="select * from ZIP_T where CODE_C='{$addNo}'"; //クエリの結果を返す $result_id = doquery($query,$conn_id); // 結果セットからキー配列(連想配列)へ $ZipCode = mysql_fetch_assoc($result_id); //結果セットを返す。 $inpadd = $ZipCode["CODE_C"]; $ken = $ZipCode["KEN_C"]; $city = $ZipCode["ADD1_C"]; $address = $ZipCode["ADD2_C"]; 以上です。データベースのカラムは郵便番号が”CODE_C” 都道府県が”KEN_C”市町村が"ADD1_C"その他の住所を ”ADD2_C”としています。 何かいいお知恵がございましたらお貸しください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPにてSQLから取得したデータを使いまわしたい

    データ(テーブル名:os) id,name_a,name_b 1,マイクロ,ソフト 2,マッキン,トッシュ 3,リ,ナックス というテーブルがあり <?php $sql = mysql_query("SELECT * FROM os WHERE name_b LIKE 'ソフト'"); while($ck = mysql_fetch_assoc($sql)){ } ?> とした場合 whileの中では、echo $ck[name_a]; とすればこの場合「マイクロ」と表示されますが whileの外でも表示させたい場合はどうすれば効率がいいでしょうか? 一つは、whileの中で$a = $ck[name_a]; $b = $ck[name_b]・・・と入力すればいいのですが フィールド数が結構な数ある為に効率が悪いです。 また、 list($ck2[],$ck2[],…) = $assoc; というようにlistを使ってもつらつらと書かなければなりません。 もしくは、mysql_fetch_assocをrowに書き換えて for($i=0;$i<count($ck);$i++){ $ck2[$i] = $ck[$i]; } としてしまうか、 現在htmlで作業しているのですが <?php while(){ ?> <?php echo $ck[name_a]; ?> <?php } ?> がいいかな。と思ったりするのですが なにぶん素人の考えなので、実際に仕事等で利用されている方は どのようにして使用しておられるのか教えて頂けると幸いです。 宜しくお願いします。

    • ベストアンサー
    • MySQL