时间:2021-07-01 10:21:17 帮助过: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 "
表名:$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 "
表名:$table_name";
//***就是在这里
//***请问各位,怎么获取多个表名
}
}
}
———————
敬礼,
致谢!
———————
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 "
表名:$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 "
表名:$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
";