2017-03-18 49 views
0

無法使用while循環顯示mysql_fetch_array的所有行。如何使用while循環顯示mysql_fetch_array的所有行

嗨。我的問題是我只能顯示輸入數據庫表的最後一行。 我用php解析表單數據以插入到數據庫表中。 我知道表格數據被插入到表格中。 我正在使用while循環嘗試從表格的所有行中的兩列提取數據。 我使用php來顯示每列中的兩列id & product_name的數據。 這是我的理解,一個mysql_fetch_array將只返回1行,除非它與一個while循環一起使用,然後應該返回所有行。所以我很困惑,爲什麼我只能擺出最後一行。

當我瀏覽phpMyAdmin中的表格時,有三行各有一個ID號碼。 它們按順序1,2,3順序排列,因爲id列是自動遞增的。 id列是主鍵。 product_name列是唯一鍵。

我不認爲我的查詢結構有問題。 可能是一個定義$ product_list變量的問題?我不知道。

我已關閉瀏覽器並清除所有歷史記錄,cookies等。 我已停止&重新啓動Apache服務器& mysql。

當我echo var_dump($ sql);我得到:類型(mysql結果)的資源(6)。 當我回聲var_dump($ product_list);我得到:string(99)「3 - Blue Jeans編輯•刪除」 當我print_r($ sqL);我得到:資源ID#6 當我echo $ product_list;我得到:3 - 藍色牛仔褲編輯•刪除

我花了很多時間通過谷歌搜索尋找答案,但沒有一個似乎適合這個特定的問題。

我確實看到一個類似的問題,建議使用串聯方法,但有零(0)票。所以我不確定這是否是對我的問題可行的補救措施。

這裏是我使用的代碼:

<?php 
    //this block grabs the whole list for viewing 
    $product_list = ""; 
    $sql= mysql_query ("SELECT * FROM `products`"); 
    $product_count = mysql_num_rows ($sql); 
    if ($product_count > 0) { 
     while($row = mysql_fetch_array ($sql)) { 
      $id = $row['id']; 
      $product_name = $row ['product_name']; 
      $product_list = "$id - $product_name &nbsp; &nbsp; &nbsp; <a    
      href='#'>edit</a> &nbsp; &bull; <a href='#'>delete</a> 
      <br/>"; 

     } 
    } else { 
     $product_list = "You have no products listed in your store yet"; 
    } 
    ?> 

    <?php echo $product_list; ?> 
+1

不要再使用'mysql_ *'函數了。他們折舊。 –

回答

1

您將要覆蓋$所屬類別中的每一個循環。

你必須毗連運算符來concateate .=

$product_list .= "$id - $product_name &nbsp; &nbsp; &nbsp; <a href='#'>edit</a> &nbsp; &bull; <a href='#'>delete</a> <br/>";

+0

根據您的建議,我在$ product_list後加了點,現在我有一條錯誤消息.Parse錯誤:語法錯誤,在第58行的C:\ xampp \ htdocs \ tutorials \ kensStore \ store_admin \ inventory_list.php中出現意外的'=' – Learn2Earn

+0

誰能告訴我爲什麼concant =不起作用? – Learn2Earn

+0

concant operator在這種情況下工作。我犯了一個愚蠢的錯誤。我在點符號和等號之間有一個空格。看起來像「。=」而不是「。=」更正concant操作符解決了我的問題。謝謝Jakub A. – Learn2Earn

0

好這個答案可能不是你要找什麼,但我只用庫MySQLi沒有舊版本。我只會用更新的語法重寫你的代碼,因爲我知道這會起作用。所以這裏去

<?php 
 
    $conn = new mysqli($server, $username, $password, $database); 
 
    $product_list = ""; 
 
    $sql = $conn->query("SELECT * FROM products"); 
 
    $product_count = mysqli_num_rows ($sql); 
 
    if ($product_count > 0) { 
 
     while($row = $sql->fetch_assoc()) { 
 
      $id = $row['id']; 
 
      $product_name = $row ['product_name']; 
 
      $product_list = "$id - $product_name &nbsp; &nbsp; &nbsp; <a    
 
      href='#'>edit</a> &nbsp; &bull; <a href='#'>delete</a> 
 
      <br/>"; 
 

 
     } 
 
    } else { 
 
     $product_list = "You have no products listed in your store yet"; 
 
    } 
 
    ?>

您將需要無論是在mysqli的面向對象方法中添加$conn = new mysqli($server, $username, $password, $database);或可以在$sql = $conn->query("SELECT * FROM products");線替換$conn枝條現有之一,這應該工作。

+0

Praveen M感謝您的答覆,我的答案產生了與以前相同的結果。 – Learn2Earn