2015-09-26 34 views
0

我正在尋找一種方法,可以從MySQL表中選擇所有行從表2列。MySQL/PHP - 選擇表1中的列等於表2中的列並創建一個foreach循環的所有行

這是我想實現的代碼描述它。我嘗試過但沒有任何反應。

SELECT * FROM `table1` WHERE `table1.id`= `table2.id` ORDER by `table1.name` ASC; 

,然後當我選擇這些行,我必須迴應他們中的一些進入foreach循環,這樣的事情:

<?PHP 
foreach($results as $row){ 
echo $row['table1.name'];    
} 
?> 

你能不能給我一個正確的方式讓這件事情發生,因爲一個回答我的問題。

在此先感謝!

+0

用mysql加入 –

回答

0

使用在FROM部分兩個表

SELECT * FROM `table1`, `table2` WHERE `table1.id`= `table2.id` ORDER by `table1.name` ASC; 

或者使用INNER JOIN這樣

SELECT * FROM `table1` INNER JOIN `table2` ON `table1.id`= `table2.id` ORDER by `table1.name` ASC 

&然後取這樣的值,你不需要別名$行[],但列(或它們各自的別名)必須是唯一的

<?PHP 
    $query = "SELECT * FROM `table1`, `table2` WHERE `table1.id`= `table2.id` ORDER by `table1.name` ASC"; 

    $res = mysqli_query($conn, $query); 
    while($row = $mysqli_fetch_assoc($res)){ 
     echo $row['name'];    
    } 
?> 

答案假定您已經創建了一個名爲$康恩

+0

這不是一個foreach循環。這是,雖然,我需要foreach ... –

+0

澄清:兩個SQL語句完全相同,但'內部連接'是恕我直言,更容易理解。 – tillz

+0

使用'PDO'和'fetchAll'將返回一個數組,並且可以在該數組上使用'foreach'。 http://php.net/manual/en/pdostatement.fetchall.php – mynawaz

0

使用mysql 數據庫連接加入

SELECT * FROM `table1` inner join table2 on `table1.id`= `table2.id` ORDER by `table1.name` ASC; 

或完整的代碼

<?PHP 
    $query = "SELECT * FROM `table1` inner join table2 on `table1.id`= `table2.id` ORDER by `table1.name` ASC"; 

    $res = mysqli_query($conn, $query); 
    $row = $mysql_fetch_array($res); 
    foreach($row as $rows){ 
    //Add colum name 
    echo $rows['name']; 
    } 

?> 
+0

'$ rows ['name'];'是table1或table2的名稱,我怎麼理解? –

+0

在mysql查詢中爲每個表添加一個**別名**,如** table1.name作爲name1 ** –

+0

您可以使用此編輯您的答案,因此我可以將您的問題標記爲答案! –

相關問題