我想以這種方式來使用PDO和重用輸出模板:PDO while循環再利用輸出模板
selected_products_show .= '<div class="'.$product_id.'">'.$product_name.'</div>';
用於將因爲兩個$下令= 1來執行這兩個查詢& $ shipped = 1。 問題是在輸出部分:
<?php if ($ordered == 1) { echo $selected_products_show;}?>
<?php if ($shipped == 1) { echo $selected_products_show;}?>
$ selected_product_show得到第二回路,其中$運= 1改寫了。我怎樣才能得到正確的查詢(現在發生),並將正確的循環與正確的變量顯示相結合(全部使用while循環,而重用相同的輸出模板)?
下面是代碼:
$ordered = 1;
$shipped = 1;
if ($ordered == 1) {
$queryEnd = "WHERE product_id IN (?,?,?)";
}
if ($shipped == 1) {
$queryEnd = "ORDER BY product_id DESC LIMIT 5";
}
$query = "SELECT product_id, product_name FROM products $queryEnd";
if ($ordered == 1) {
$ordered_products = array(1,2,3);
$selected_products = $dbh->prepare($query);
$selected_products->execute($ordered_products);
}
if ($shipped == 1) {
$selected_products = $dbh->prepare($query);
$selected_products->execute();
}
while($row = $selected_products->fetch(PDO::FETCH_ASSOC)){
$product_id = $row["product_id"];
$product_name = $row["product_name"];
$selected_products_show .= '<div class="'.$product_id.'">'.$product_name.'</div>';
}
<?php if ($ordered == 1) { echo $selected_products_show;}?>
<?php if ($shipped == 1) { echo $selected_products_show;}?>
任何想法,這可怎麼實現的?
@YourCommonSense真的嗎?這是爲什麼?您可能必須重複使用while循環中的相同確切輸出,但使用不同的正確PDO語句。想象一下,你必須輸出1000行的輸出,你會有3000行重複相同的事情,而不是1000。我實際上認爲它在這種情況下更有效率。 – Maverick 2012-04-02 15:35:35
@YourCommonSense那麼你會如何去做呢? – Maverick 2012-04-02 15:44:20
我將顯示邏輯(關於顯示數據)的業務邏輯(關於獲取和準備數據)分開。因此,PDO將保留在業務邏輯部分,同時只將數據傳遞到模板中。當然我會實現分頁,每頁僅顯示100行 – 2012-04-02 16:01:52