mysql:8296
From: Hiroyasu TOBA <Hiroyasu TOBA <toba@xxxxxxxxxx>>
Date: Sat, 18 Oct 2003 15:20:46 +0900
Subject: [mysql 08296] Re: SELECT JOIN した結果の PHP mysql 関数からの取り出しについて
たびたびすみません、鳥羽です。 編集途中で送ってしまいました。再度投稿します。 ----- こんにちは、鳥羽です。 古賀様、とみた様、早速のアドバイスありがとうございます。 とみたまさひろ wrote: >>とみたです。 >> >> >>API があるようなので、それを使って mysql_fetch_array() の代わりとなる >>ような独自の関数を作ればよいのかも…。 >> >>mysql_fetch_row() で1レコードを取り出して、各フィールドについて >>mysql_fetch_field() でテーブル名とフィールド名を求めて、"." で結合して >>ハッシュのキーとする…という関数です。 >> >>私の怪しい PHP の知識で書くとこういう感じ…。 >># 試してません。たぶん、このままでは動かないと思います (^^; >> >> $row = mysql_fetch_array($result) >> $hash = array() >> for ($i=0; $i<count($row); $i++) { >> $f = mysql_fetch_field($result, $i) >> $k = $f->table + "." + $f->name >> $hash[$k] = $row[$i] >> } >> >> 解決のヒント、どうもありがとうございます。 早速、アドバイスどおり試してみました。 こんな感じでうまくいきました。 $flag = 0; // レコード読み込みループ while ($row =@mysql_fetch_array($result,MYSQL_ASSOC)) { // ハッシング?テーブル作成は 1回だけ if( $flag == 0 ) { $hash = array(); $v = array_values($row); for( $i=0; $i<count($row); $i++ ) { $f = mysql_fetch_field($result,$i); $k = $f->table . "." . $f->name; $hash[$k] = $i; } $flag = 1; } // 1要素配列がかえってくるので苦肉の策でarray_pop() $table1_elm1 = array_pop( array_slice($row,$hash["Table1.Element1"],1)) ; $table1_elm1 = array_pop( array_slice($row,$hash["Table5.Element6"],1)); . . } とかです。 参照用テーブル作成の部分はごちゃごちゃするので関数化しようかと思います。 アクセスに行く部分は、特にきにならないので、そのまま、、、。 参照の時などは、直接、配列内の要素を順番指定でアクセスできると、 効率的なのですが、、、 yuji koga wrote: >>お世話になります。古賀です。 >> >> >>異なるテーブル間のリレーションならば、 >>とみた様の解決策が良いと思います。 >> >>#とりあえず、異なるテーブル間で同じフィールド名を使わない、 >>#というのが一番の解決策なのかも知れません。 >> >> なるほど、確かに、重ならないフィールド名ならば、素のままでアクセス できますね。(知らなかった、、、。) とみたさん、古賀さん、どうもありがとうございました。 それでは、失礼します。 ---- 鳥羽 弘康
8283 2003-10-17 17:31 [Hiroyasu TOBA <toba@] SELECT JOIN した結果の PHP mysql 関数からの取り出しについて 8284 2003-10-17 17:54 ┗[yuji koga <koga-y@xx] 8286 2003-10-17 18:39 ┗[とみたまさひろ <tomm] 8288 2003-10-17 19:07 ┣[yuji koga <koga-y@xx] 8308 2003-10-21 09:14 ┃┗[とみたまさひろ <tomm] 8295 2003-10-18 15:08 ┗[Hiroyasu TOBA <toba@] -> 8296 2003-10-18 15:20 ┗[Hiroyasu TOBA <toba@]