[PHP-users 3895] Re: mysql を使ったデータベースで配列による選択(セレクト)

Youichi Iwakiri php-users@php.gr.jp
Tue, 27 Nov 2001 04:08:15 +0900


いわきりです

#ソースの一部をみただけじゃわかる訳がありません。

Hiroshi Ozeki wrote in <008001c176a9$f07aba10$0400000a@ecotec.co.jp>:
 >一件目のデータは表示されるようになりました。認識されるようになった
 >みたいです。
 >しかし、その後のデータはエラーです。データを呼び出すのに下記のよう
 >にしています。
 >これがよくないのでしょうか?
 >    $member_id=mysql_result($result,$i,"member_id");
 >    $passwd =mysql_result($result,$i,"passwd");
 >    $mname =mysql_result($result,$i,"mname");
 >    $pref =mysql_result($result,$i,"pref");
 >    $telno =mysql_result($result,$i,"telno");
 >    $email =mysql_result($result,$i,"email");
 >    $acknowledge =mysql_result($result,$i,"acknowledge");

ここで使ってる$iってなにもの? ってことです。

Hiroshi Ozeki wrote in <006401c176a1$ebb6ea10$0400000a@ecotec.co.jp>:
 ><?
 >num = mysql_num_rows ($result);
 >for ($i=0; $i<$num; $i++) {
 >print "$check[$i]<br>";
 >?>
 >aaaa
 >bbbb
 >cccc
 >dddd

前のメールのprint付近にmysql_db_queryを埋め込んだのなら、
$i=0の時は
  SELECT * FROM table WHERE id ='aaaa'
が発行されるだけ

この場合はループを4回まわして結果を取得するしかないですよね。

<?
num = mysql_num_rows ($result);
for ($i=0; $i<$num; $i++) {
  $query_result = ($db_name, "
    SELECT * FROM table WHERE id ='{$check[$i]}'
  ");
  $nhits = mysql_num_rows ($query_result);
  for ($j=0; $j<$nhits; ++$j) {
    $member_id=mysql_result($result,$j,"member_id");
    $passwd =mysql_result($result,$j,"passwd");
    $mname =mysql_result($result,$j,"mname");
    $pref =mysql_result($result,$j,"pref");
    $telno =mysql_result($result,$j,"telno");
    $email =mysql_result($result,$j,"email");
    $acknowledge =mysql_result($result,$j,"acknowledge");
    // この後に表示でもなんでもいいけど処理を書く

    // 表示とかなんとかの処理終了
  }
}
?>

上みたいな書き方は普通しないと思うけど。
mysqlのSELECTが
  SELECT * FROM table WHERE id IN ('aaaa', 'bbbb', 'cccc', 'dddd')
という書き方を許すならもう少しましなコードが書けますね。

#添削教室みたいだ