1

問題は、 table_XSELECT * FROM table_Xが別のクエリの結果であることです。おそらく 2 つのループで、次のような方法で行う方法がわかりません。

<?php

$query1 = mysql_query("SELECT * FROM table_ref");
while ($row = mysql_fetch_array($query1))
{

     $name = $row['table_name'];

     $query2 = mysql_query(" SELECT * FROM '$name' ");

     while ($row = mysql_fetch_array($query2)) 
     {
         $time = $data['itime'];
         echo $time;      
     }
}

?>

テーブルはすべて似ていて、キーがなくてジョイントできません。だから私が欲しいのは、最初のクエリの各結果から2番目のクエリの結果のみを表示することです!

4

4 に答える 4

0

コメントで指摘されていることは別$rowとして、2 番目のループで上書きしています。

$dataまた、定義されていない配列 ( )を読み込もうとしています。

以下ははるかにうまく機能します(ただし、それでも理想的ではありません):

$query1 = mysql_query("SELECT `table_name` FROM `table_ref`");
while ($row = mysql_fetch_array($query1))
{
     $name = $row['table_name'];
     $query2 = mysql_query("SELECT `itime` FROM `$name`");

     while ($data = mysql_fetch_array($query2)) 
     {
         $time = $data['itime'];
         echo $time;      
     }
}
于 2013-04-15T12:18:48.627 に答える
0

引用符を変更して、クエリを開始できるようにするだけです

変化する

 $query2 = mysql_query(" SELECT * FROM '$name' ");

 $query2 = mysql_query(" SELECT * FROM `".$name."` ");

私はむしろこの部分をチェックすることをお勧めします

 while ($row = mysql_fetch_array($query2)) 
 {
     $time = $data['itime'];
     echo $time;      
 }

$row前のクエリをフェッチするために変数を既に使用しているので、別のものに変更する$dataことをお勧めします。すでに使用しているが宣言していないため、ニーズに一致しているように見えます

 while ($data = mysql_fetch_array($query2)) 
 {
     $time = $data['itime'];
     echo $time;      
 }
于 2013-04-15T12:16:35.247 に答える
0

それで、あなたの構造は何ですか?理解できない。多くのテーブルがリストされている列 table_name がありますか? その場合は、$name に逆引用符を使用してください。

$query2 = mysql_query(" SELECT * FROM `$name` ");
于 2013-04-15T12:17:14.247 に答える
0

このクエリを試してください:

select x.* from ( SELECT table_name FROM table_ref) as x

于 2013-04-15T13:21:18.803 に答える