1

我需要做一个SELECT * FROM table_X,问题是 table_X 是另一个查询的结果,我不知道该怎么做,也许有两个循环,像这样:

<?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;      
     }
}

?>

桌子都很相似,我不能联合,没有钥匙。所以我想要的是从第一个查询的每个结果中只显示第二个查询的结果!

4

4 回答 4

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

除了评论中指出的明显内容外,您正在$row第二个循环中覆盖。

此外,您正在尝试读取$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

试试这个查询:

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

于 2013-04-15T13:21:18.803 回答