2016-12-16 148 views
0

我正在嘗試使用while循環和另一個while循環中的庫存計數在行中發佈產品的庫存記錄函數,但是當我運行代碼時它會在第二個返回錯誤雖然循環,我不知道我錯了哪一部分。在這裏需要一些幫助!當在另一個while循環中使用while循環時出錯

下面的代碼:

$conn = mysql_connect('localhost', 'root', ''); 
     mysql_select_db('EmployeeDB'); 
     $rproduct = "SELECT Product FROM `tbl_user` GROUP BY Product"; 
     $result = mysql_query($rproduct); 

     while($row1 = mysql_fetch_array($result)){ 
     $prod = $row1['Product']; 
      echo "<tr><th>$prod</th>"; 
      $rstock = mysql_query('SELECT opening, closing FROM tbl_user WHERE Product = $prod ORDER BY date'); 

      while ($row2 = mysql_fetch_array($rstock)) { 
       echo "<td>".$row2['opening']."</td>"; 
       echo "<td>".$row2['closing']."</td>"; 
      } 

      echo"</tr>"; 
     } 

error

+1

你得到了什麼錯誤?使用'JOIN's會更好。 –

+1

使用mysqli或pdo代替mysql.mysql已棄用 –

+1

(1)'Product'可能是一個字符串,所以應該引用 - >'... WHERE Product =「$ prod」...'。 (2)當你在一個循環內進行查詢時,你可能只需要用'JOIN' **尤其是**當你從同一個表中選擇時執行此操作。 – Sean

回答

0

快速解決方案

替換此行:

  $rstock = mysql_query('SELECT opening, closing FROM tbl_user WHERE Product = $prod ORDER BY date'); 

有了:

$rstock = mysql_query("SELECT opening, closing FROM tbl_user WHERE Product = '$prod' ORDER BY date"); 

有兩個問題與原件一致:

  1. 你使用一個單引號字符內的一個變量,這是錯誤的,它只是用雙引號的字符串工作。
  2. 變量$ prod需要用單引號括起來,因爲你正在搜索一個字符串,而沒有你實際告訴mysql的引用來搜索一行,其中列產品等於列內的值, $刺。

更好的解決方案

使用mysqlipdo,而不是MySQL的,因爲它已經過時,並準備語句,而不是隻把變量裏面的字符串。

+0

與以前一樣的錯誤;( –

+0

你可以使用echo mysql_error()在我提到的那一行後告訴我它說什麼嗎 –

+0

它顯示'未知列'Shokubutsu'在'where子句',但在我的數據庫中有這個數據....很奇怪 –