我正在從MySql_和/或MySqli_轉向PDO,並且我需要一些關於如何正確使用的建議。 (學習過程)。在這種情況下,我必須通過類別(links_cat)進行循環,並從另一個表中返回所有對此類別作出響應的記錄(鏈接)。我有代碼正在工作,但肯定可以改進。我想這樣做的專業,我可以(未做瘋狂太..(:只要乾淨,紮實快速的代碼謝謝你的忠告提前循環中的PDO循環 - 如何使它正確的方式?
<?php
// Get Link Categories
$links_cat = $pdo->prepare("SELECT * FROM links_cat");
$links_categories = array();
if ($links_cat->execute()) {
while ($row = $links_cat->fetch(PDO::FETCH_ASSOC)):
$links_categories[] = $row;
$link_cat_id = $row['id'];
$link_cat_name = $row['name'];
echo $link_cat_name . "<br/>";
// Get Links in current Category
$links = $pdo->prepare("SELECT * FROM links WHERE category = '$link_cat_id' ORDER BY name");
$links->execute();
while ($link_row = $links->fetch()):
echo $link_name = $link_row['name']. "<br/>";
endwhile;
endwhile;
}
$pdo = null;
?>
UPDATE
。我加入表和返回所有的結果,但我想列出類別只有一次,而不是每個記錄
<?php
$links_cat = "SELECT links_cat.name AS linkcat, links.link AS linkname FROM links_cat INNER JOIN links ON links.category=links_cat.id";
foreach($pdo->query($links_cat) as $row) {
echo $row['linkcat'] . "<br>";
echo $row['linkname'] . "<br>";
}
?>
清單現在的問題是這樣的:
Cat 1
- L1
Cat 1
- L2
Cat 2
- L3
Cat 2
- L4
我正在尋找房源是這樣的:
Cat 1
- L1
- L2
Cat 2
- L3
- L4
在數據庫中使用JOIN,而不是在客戶端。 'SELECT * FROM links_cat lc JOIN links c ON l.category = lc.id' 您的代碼有SELECT N + 1問題。 –
可以這麼友好地給出一些關於如何顯示數據的代碼示例(我更新了我的問題,以便您可以看到我希望如何將這些數據顯示出來)。 Cuold還告訴我更多關於SELECT N + 1的問題(你在這裏是什麼意思?) – Nita