1
我有這個循環運行的購物車腳本,但是當我嘗試發送電子郵件時,我只允許通過電子郵件發送9個項目超過9個項目的電子郵件只是空白。有人告訴我,我應該將我的查詢'SELECT * FROM books WHERE id = '.$id;
更改爲不帶循環的所有項目。這是正確的,我應該嘗試做什麼?如果有的話可以有人給我一個我將如何做到這一點的例子?有人可以幫我改變這個PHP查詢來獲得所有領域的一槍嗎?
<?php
function showCarts() {
global $db;
$cart = $_SESSION['cart'];
if ($cart) {
$items = explode(',',$cart);
$contents = array();
foreach ($items as $item) {
$contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
}
$output[] = '<table style="border-width:1px; bordercolor="#0099FF"">';
$output[] = '<tr>';
$output[] = '<thead bgcolor="#0099FF">';
$output[] = '<th>Item</th>';
$output[] = '<th>Price</th>';
$output[] = '<th>Quantity</th>';
$output[] = '<th>Total</th>';
$output[] = '</thead>';
$output[] = '</tr>';
foreach ($contents as $id=>$qty) {
$sql = 'SELECT * FROM books WHERE id = '.$id;
$result = $db->query($sql);
$row = $result->fetch();
extract($row);
$output[] = '<tr>';
$output[] = '<td>'.$title.' by '.$author.'</td>';
$output[] = '<td>$'.$price.'</td>';
$output[] = '<td>'.$qty.'</td>';
$output[] = '<td>$'.($price * $qty).'</td>';
$total += ($price * $qty);
$output[] = '</tr>';
}
$output[] = '</table>';
$tax = (.07);
$taxtotal += round($total * $tax,2);
$amounttotal += ($total + $taxtotal);
$output[] = '<p>Tax: <strong>$'.$taxtotal.'</strong></p>';
$output[] = '<p>Total: <strong>$'.$amounttotal.'</strong></p>';
}
return join('',$output);
}
?>
'WHERE ID ='N次總是方式比'WHERE ID較慢'用N值。 – tadman
*旁註:*錯誤的HTML:'
小心,您很可能會接受SQL注入和XSS攻擊。始終使用針對數據庫的準備/參數化查詢,以及在HTML上下文中使用任意數據的'htmlspecialchars()'。 – Brad
回答
替換爲您的for循環的一部分:?(?,?,?...)
來源
2013-05-30 02:29:23 Raptor
謝謝,這確實很好,但當我向購物車中添加超過9件商品時,我仍然收到一封空白電子郵件。我將showCart()函數添加到我的電子郵件腳本的主體中,以通過電子郵件發送購物車。無論如何要做到這一點沒有一個循環呢? – user2426617
問題在別處。檢查您的最大文章大小。您可能會超出尺寸限制。 – Raptor
再次感謝上面的答案,我檢查了我的max_post_size,它是50M,我的memory_limit只有20M,你認爲這是足夠的嗎?此外,我使用雅虎作爲我的主機,我沒有訪問我的php.ini文件或.htaccess有關如何解決該問題的任何建議? – user2426617
相關問題