首頁 > 後端開發 > php教程 > mysql_field_table在union後面無效?

mysql_field_table在union後面無效?

WBOY
發布: 2016-08-04 09:22:03
原創
1098 人瀏覽過

———————
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>
登入後複製
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板