(php) mysql_field_table在union后无效?

———————
mysql_field_table 是获取数据表名的函数,
正常情况下的的sql select 只查询1个表,是可以执行,
请问:当sql select在union查询多个表之后,请问怎么样获取多个表名?
———————
可以执行的代码:
//sql select 只查询1条数据

$sql = " SELECT id,title FROM `TABLE1` WHERE id IN$id ORDER BY id DESC LIMIT 0,10
";
$result = mysql_query$sql;
$table_name = mysql_field_table$result,0;
echo "<br />表名:$table_name";

———————
问题的代码:

//合并2个表,按时间倒序取出前10条记录
$sql = " SELECT id,title FROM `TABLE1` WHERE id IN$id UNION SELECT id,title FROM `TABLE2` WHERE id IN$id UNION ORDER BY id DESC LIMIT 0,10
";
$result = mysql_query$sql; if $result { if mysql_num_rows$result { $a = array; while$arr = mysql_fetch_array$result{ $table_name = mysql_field_table$result,0; echo "<br />表名:$table_name"; //***就是在这里 //***请问各位,怎么获取多个表名 } }
}

———————
敬礼,
致谢!

union之后的结果集是被视同为同一张数据库表的,所以你这里无论怎么取mysql_field_table都只能得到一个表名。正确的作法是你在构建SQL语句的时候,给每一条记录附加上它所来自于的数据库表名,这样你从结果集里就能知道这条数据是来自于哪一张数据库表的了。

$sql = " SELECT id,title,TABLE1 AS ComesFrom FROM `TABLE1` WHERE id IN$id UNION SELECT id,title,TABLE2 FROM `TABLE2` WHERE id IN$id UNION ORDER BY id DESC LIMIT 0,10
";

发表评论

电子邮件地址不会被公开。 必填项已用*标注