带有PDO样式连接的php购物车页面中的未定义索引

时间:2017-05-21 07:27:26

标签: php mysql pdo

我尝试使用带有PDO样式连接的SESSION创建购物车,但我面临错误

  

"注意:未定义的索引:名称在" "注意:未定义的索引:价格在&#34 ;

我很确定我的数据库表中存在,这是代码

<?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  
        }  

在此先感谢,我真的不知道如何解决这个问题=(

3 个答案:

答案 0 :(得分:1)

问题在于函数fetchAll,它一次返回所有行。您需要逐个获取行,这可以通过fetch_row的{​​{1}}方法完成。你应该从

改变它

mysqli

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

或者,您也可以使用while($row = $stmt->fetch_row(PDO::FETCH_ASSOC))但是您需要将结果存储在变量&amp;然后循环遍历该变量,如下所示

fetchAll

答案 1 :(得分:0)

您在pdo语句中使用fetchAll,它将返回一个数组。所以你需要通过$ row [0] ['name']访问,或者使用

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

答案 2 :(得分: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  
                     }  
                }  
                ?>