2017-05-21 32 views
0

我試圖創建一個使用與PDO風格的連接會話的購物車,但我面對錯誤未定義指數與PDO式接口

「通知PHP購物車頁面:未定義指數:名稱「‘通知:未定義指數:價格’

我敢肯定,在我的數據庫表存在,這裏是代碼

<?php 
    $stmt = $conn->prepare('SELECT * from tbl_product'); 
    $stmt->execute(); 
    if($stmt->fetchColumn() > 0) 
    { 
     while($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) 
     { 
     ?> 
     <div class="col-md-4"> 
      <form method="post" action="../ppuyakul/cata_main?action=add&id=<?php echo $row["id"]; ?>"> 
       <div style="border:1px solid #333; background-color:#f1f1f1; border-radius:5px; padding:16px;" align="center"> 
        <img src="<?php echo $row["image"]; ?>" class="img-responsive" /><br /> 
        <h4 class="text-info"><?php echo $row["name"] ?></h4> 
        <h4 class="text-danger">$ <?php echo $row["price"]; ?></h4> 
        <input type="text" name="quantity" class="form-control" value="1" /> 
        <input type="hidden" name="hidden_name" value="<?php echo $row["name"]; ?>" /> 
        <input type="hidden" name="hidden_price" value="<?php echo $row["price"]; ?>" /> 
        <input type="submit" name="add_to_cart" style="margin-top:5px;" class="btn btn-success" value="Add to Cart" /> 
       </div> 
      </form> 
     </div> 
     <?php 
     } 

在此先感謝,我真的不知道如何解決這個問題=(

+0

打印用'的print_r($行)的'$ row''&顯示輸出 –

+0

你確定你有一個在你的表'tbl_product'中列'name'? – hassan

+0

@AgamBanga感謝我現在就試試, –

回答

1

的問題是與功能fetchAll這一次返回所有行。您需要逐行取出行,可通過mysqlifetch_row方法完成。你應該從

while($row = $stmt->fetchAll(PDO::FETCH_ASSOC))

改變

while($row = $stmt->fetch_row(PDO::FETCH_ASSOC))

或者,您還可以使用fetchAll但你需要通過變量的結果存儲在變量&然後循環像下面一樣

$all_rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
foreach($all_rows as $row) 
{ 
    //do the html part & anything 
} 
+0

PS或使用fetchAll並使用foreach遍歷它,'$ rows = $ stmt-> fetchAll (PDO :: FETCH_ASSOC); foreach($ rows ...' – hassan

+0

@hassan,這也是正確的,更新了答案。謝謝:) –

+0

謝謝!!!!!太多了!!! 其工作現在我將發佈最終代碼 –

0

您使用fetchAll你PDO聲明,它會返回一個數組。因此,你需要通過$行[0] [「名」]來訪問,或使用

foreach($row as $v){ 
    $v['name']; 
} 
0

這裏是最後的工作代碼,感謝,所有你們再次非常感謝

<?php 
       $stmt = $conn->prepare('SELECT * from tbl_product'); 
       $stmt->execute(); 
       if($stmt->fetchColumn() > 0) 
       { 
        $all_rows = $stmt->fetchAll(PDO::FETCH_ASSOC); 
        foreach($all_rows as $row) 
        { 
       ?> 
       <div class="col-md-4"> 
        <form method="post" action="../ppuyakul/cata_main.php?action=add&id=<?php echo $row["id"]; ?>"> 
          <div style="border:1px solid #333; background-color:#f1f1f1; border-radius:5px; padding:16px;" align="center"> 
           <img src="<?php echo print_r($row)["image"]; ?>" class="img-responsive" /><br /> 
           <h4 class="text-info"><?php echo $row["name"] ?></h4> 
           <h4 class="text-danger">$ <?php echo $row["price"]; ?></h4> 
           <input type="text" name="quantity" class="form-control" value="1" /> 
           <input type="hidden" name="hidden_name" value="<?php echo $row["name"]; ?>" /> 
           <input type="hidden" name="hidden_price" value="<?php echo $row["price"]; ?>" /> 
           <input type="submit" name="add_to_cart" style="margin-top:5px;" class="btn btn-success" value="Add to Cart" /> 
          </div> 
        </form> 
       </div> 
       <?php 
        } 
       } 
       ?>