首页  >  文章  >  后端开发  >  mysql_field_table在union后无效?

mysql_field_table在union后无效?

WBOY
WBOY原创
2016-08-04 09:22:031080浏览

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

<code>$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";</code>

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

<code>//合并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";
            //***就是在这里
            //***请问各位,怎么获取多个表名
        }
    }
}</code>

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

回复内容:

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

<code>$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";</code>

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

<code>//合并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";
            //***就是在这里
            //***请问各位,怎么获取多个表名
        }
    }
}</code>

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

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

<code>$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
";</code>
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn