2016-01-13 20 views
1

在PHP中使用foreach循環我試圖從數據庫中檢索數據。這個想法是使用foreach循環從數據庫中顯示數據,例如標題,以便將數據導入對象/ div。如何從一個PHP foreach循環獲取每個對象的id?

這裏是例子: result example

這是數據庫(數據庫 - >帖): database example

我使用的是MySQL查詢獲取數據:

$db = new mysqli('localhost', 'username', 'password', 'database'); 

$postQuery = $db->query(" 
     SELECT 
     posts.id, 
     posts.title 

     FROM posts 

     GROUP BY posts.id 
     "); 

    while($row = $postQuery->fetch_object()){ 
     $posts[] = $row; 
    } 

然後我使用foreach循環顯示數據:

<?php foreach($posts as $post): ?> 
<div><?php echo $post->title; ?> 
etc. 
</div> 
<?php endforeach; ?> 

似乎一切工作,除非當我嘗試在mysql查詢中使用posts.id檢查數據庫中相應的posts.id表的內容。有沒有一種方法來檢索ID在查詢或PHP函數中使用它?

+0

'$ post-> id;'是你要找的東西,這隻能在'foreach'循環中使用。 – Alex

+0

謝謝你的回答,但我意識到這一點。重點是$ post-> id由於某種原因在foreach之外不起作用。 – NightShift

+1

這取決於你在找什麼。這是行不通的,因爲你在'while循環中創建一個數組,而不是在'foreach'中使用它。 – Alex

回答

2

在php中,您可以在foreach循環(遵循您的編碼約定)或$posts[x]->id(在foreach循環之外)引用$post->id,其中x是$ posts數組內的元素的索引。

但是,在sql中,您可以在某些字段上連接表,因此您不必檢索posts.id列即可將這些ids作爲sql請求的一部分發回。有關更多詳細信息,請參閱mysql的文檔joins

您應該從查詢中刪除group by posts.id,這是多餘的。

+0

感謝您的回答,但有沒有辦法在foreach循環之外使用$ post-> id?或者我必須調用循環內的查詢?或者是否可以設置一個引用循環外的查詢的變量? – NightShift

+1

@Polymelon請不要在評論中添加代碼,你可以編輯你的問題。 – Alex

+0

它是。更新了我答案的第一句話。 – Shadow

相關問題