2011-08-14 38 views
1

這是非常基本的問題,我想。基本上我有一些PHP/MySQL代碼從多個不同的表中抽取數據(使用Inner Joins)。它看起來是這樣的:從一個從多個表中抓取的mysql查詢中獲取一行的表名

$query = "SELECT * FROM table1 INNER JOIN table2 USING (key)"; 
$data = mysqli_query($dbc, $query); 

while ($row = mysqli_fetch_array($data)) { 
    echo $row[1]; 
} 

因此,代碼是很簡單的,但我想這樣做是呼應表的每一行是在while循環裏面,因爲它可以在2桌。

我看到有一些像mysql_field_table和mysql_tablename這樣的舊mysql函數可以做到這一點,但它們似乎都被棄用了。

希望有關如何完成此任何建議。

謝謝! -John

回答

0

使用AS關鍵字來重命名所有列。

$select_clause = ''; 
$tables = array('tblA', 'tblB'); 
foreach($tables as $tbl) { 
    mysql_query('SHOW COLUMNS FROM ' . $tbl); 
    while ($row = mysql_fetch_assoc()) 
     $select_clause .= '`'.$tbl.'`.`'.$row['Field'].'` AS `'.$tbl 
      .'_'.$row['Field'].'`,'; 
} 
$select_clause = substr($select_clause, 0, -1); 
mysql_query('SELECT '.$select_clause.' FROM /*...*/ '); 
0

你可以爲每個表中的特殊標識,而不是使用*

select table1.row1 as t1r1, table2.row1 as t2r1,..... from ..... 

選擇數據和PHP內,你可以查找字符串t1和t2,並相應做的東西。

0

你可以做什麼是回聲從你的結果表(希望現在包含兩個表中一個以上信息場。

$query = "SELECT * FROM table1 INNER JOIN table2 USING (key)"; 
$data = mysqli_query($dbc, $query); 

while ($row = mysqli_fetch_array($data)) 
{ 
    echo $row[1] . " " . $row[2]; 
}

...然後$row[3]等等

或通過AS提供的列名或別名訪問列名/場。

$query = "SELECT * FROM table1 INNER JOIN table2 USING (key)"; 
$data = mysqli_query($dbc, $query); 

while ($row = mysqli_fetch_assoc($data)) 
{ 
    echo $row["c_name1"] . " " . $row["c_name2"]; 
}

其中「 c_name1」和「 c_name2」是您的列名稱。

相關問題