———————
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>