2012-05-11 119 views
0

使用foreach輸出mysql表格的內容時遇到困難。表(tr,td)等正在爲mysql表中的每個條目打印出來,但td和/ td標籤之間沒有任何內容,每個$ item應該被回顯。

$sql = 'SELECT domain FROM domainsuggestions'; 
$domains = mysqli_query($link, $sql); // get domain suggestions from table 
<table> 
    <tr> 
     <td>Domain Suggestions</td> 
    </tr> 
    <?php foreach ($domains as $item): ?> 
    <tr> 
     <td><?php echo htmlspecialchars($item, ENT_QUOTES, 'UTF-8'); ?></td> 
    </tr> 
    <?php endforeach; ?> 
</table> 

回答

2

你使用MySQL的邏輯是相當關閉的。您需要首先執行查詢,獲取結果的資源ID,然後遍歷結果。

$sql = 'SELECT domain FROM domainsuggestions'; 
$results= mysqli_query($link, $sql); // get domain suggestions from table 
<table> 
    <tr> 
     <td>Domain Suggestions</td> 
    </tr> 
    <?php while ($item = mysqli_fetch_assoc($results)): ?> 
    <tr> 
     <td><?php echo htmlspecialchars($item['domain '], ENT_QUOTES, 'UTF-8'); ?></td> 
    </tr> 
    <?php endwhile; ?> 
</table> 
+0

我該如何用foreach來完成這件事? – Nick5a1

+0

@Nick'foreach'需要一個* iterable *元素。你沒有,因爲你還沒有從數據庫中檢索所有的數據;通過調用'mysqli_fetch_ *',您一次只能得到一行數據。爲什麼它需要成爲「foreach」? – deceze

+0

我正在通過本書「使用PHP和MySQL構建您自己的數據庫驅動的網站 - 第4版」,這就是它的教學方式。我不明白爲什麼它不起作用,我希望在繼續之前繼續使用,因爲在接下來的章節中會使用這個用法。 – Nick5a1

0

foreach期望一個迭代元件,即一些具有可以迭代通過許多條目。這通常是一個數組,但也可以是實現Iterable接口的對象。

運行時得到的東西mysqli_query資源。這只是一個MySQL結果集的句柄。該數據還沒有在PHP中,MySQL只是給你一個說的句柄「好吧,我已經爲你準備好了結果,只要你需要,就拿到它們」。調用mysqli_fetch_assoc從MySQL獲取一個結果行。再次調用它可以獲得下一個和下一個等等。這不是一個過程,你可以通過迭代,直到沒有更多的結果,你可以繼續調用mysqli_fetch_assoc。因此foreach不起作用。