2011-08-14 13 views
1

ここではかなり基本的な問題だと思います。基本的には、複数の異なるテーブルからデータを取り出すPHP/MySQLコードがあります(内部結合を使用しています)。それは次のようになります。 複数のテーブルから取得するmysqlクエリから行のテーブル名を取得する

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

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

だからコードは十分に単純であるが、それは2つのテーブルのいずれかである可能性があるので、私がやりたいことは、各行がそのwhileループの内部にあるテーブルをエコーです。

トリックを行う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

はその後$row[3]等...

うまくいけば、今のテーブルの両方からの情報が含まれているあなたの結果テーブル(から複数のフィールド。エコーである

$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]; 
}

...と

それとも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"は列名です。

関連する問題