2012-05-17 38 views
0

我已經設置了一個'訂單'頁面,應該是非常直接的,需要每個循環從DB生成過去的訂單。在每個循環中,需要分解每個項目(,),然後再分解以從每個項目( - )中提取細節。我想知道是否有人可以告訴我爲什麼我在我的foreach循環的每次迭代結束時都收到錯誤消息「Warning:mysql_num_rows()expectpects parameter 1」?這對我來說尤其令人困惑,因爲代碼仍然有效,如果錯誤是真的,我認爲它不應該。php爆炸產品陣列拋出錯誤

<?php 
$sql = "SELECT * FROM orders WHERE store='$user'"; 
$res = mysql_query($sql); 

$arrOrders = array(); 
while ($row = mysql_fetch_array($res)) { 
    array_push($arrOrders, $row); 
} 
?> 

<table width="85%" align="center" border="0" cellpadding="5"> 
    <?php if (count($arrOrders) > 0) { ?> 
    <?php foreach ($arrOrders as $key => $value) { ?> 
     <tr> 
      <td valign="top" style="font-weight: bold"> 
       ID #<?=$value['id']?> 
      </td> 
      <td valign="top" style="font-weight: bold"> 
       Status: <?=$value['status']?> 
      </td> 
      <td valign="top" style="font-weight: bold"> 
       Order #<?=$value['order_ref']?> 
      </td> 
      <td align="left" valign="top" style="font-weight: bold"> 
       <?php 
       $tmpProds = explode(',', $value['products']); 
       foreach ($tmpProds as $key2 => $value2) { 
         $tmpProdInfo = explode('-', $value2); 

       $sql2 = 'SELECT * FROM products_full WHERE id = ' . $tmpProdInfo[0]; 
       $res2 = mysql_query($sql2); 

       if (mysql_num_rows($res2) > 0) { // THIS IS THE ROW THAT THE ERROR MESSAGE POINTS TO 
       echo $tmpProdInfo[1] + $tmpProdInfo[2] . ' x <a href="item_details.php?id=' . mysql_result($res2, 0, 'id') . '">' . mysql_result($res2, 0, 'alpha_code') . ' (' . trim(mysql_result($res2, 0, 'description')) . ')</a><br /><br />'; 
         } 
        } 
       ?> 
      </td> 
     </tr> 
     <tr> 
      <td width="100%" colspan="5" align="center"> 
       <hr style="width: 100%" /> 
      </td> 
     </tr> 
    <?php } ?> 
    <?php } else { ?> 
    <tr> 
     <td width="100%" align="center"> 
      There are currently no complete orders. 
     </td> 
    </tr> 
    <?php } ?> 
    </table> 

在此先感謝,我想我已經包括了所有相對的東西,但如果需要其他東西,請讓我知道。

+0

看起來好像您的查詢'$ sql2'失敗,因此無效結果資源被傳遞給'mysql_num_rows()' – billyonecan

+0

謝謝@deifwud,並且因爲它的發生在最後每個循環的意義在於,它是因爲它正被饋送到數組的一個空白部分?爆炸前的數組用逗號分隔(例如3-3-3,4-4-4),但它也以逗號結尾,所以我的第一次爆炸也會創建一個空數組? – JoeP

+0

這就是它:) – JoeP

回答

0

試試這個:

$sql2 = 'SELECT * FROM products_full WHERE id = '.$tmpProdInfo[1].''; 
if (count($res2) > 0) 

此外,當你想使用MySQL_num_rows你應該包括連接注意。請參閱手冊:

$link = mysql_connect("localhost", "mysql_user", "mysql_password"); 
mysql_select_db("database", $link); 

$result = mysql_query("SELECT * FROM table1", $link); 
$num_rows = mysql_num_rows($result); 
+0

嗨,謝謝你的回覆。我確實在頁面的其他地方打開了mysql連接,它是否仍然需要使用手冊中的「鏈接」方法進行連接? – JoeP

+0

我已經嘗試使用count方法,它具有與完全刪除if語句相同的結果,也就是拋出相同的錯誤消息但是3次。 – JoeP

+0

也許你的爆炸方法在'$ tmpProdInfo [0]給你一個空值'嘗試像這樣改變它'$ tmpProdInfo [1]',然後使用'count'或'mysql_num_rows'。 – Othman