PHP循环错误消息

时间:2015-03-17 17:24:58

标签: php

我是php的新手以及发布php代码。如果有任何信息丢失,请告诉我。 我试图让一个产品列表通过foreach循环回显。我不确定错误是仅仅是语法还是比这更大的东西。 以下是错误消息:

Home
Product List

Code Name Version Release Date   
( ! ) Warning: Invalid argument supplied for foreach() in /Applications/XAMPP/xamppfiles/htdocs/tech_support/product_manager/product_list.php on line 15

Call Stack
#   Time    Memory  Function    Location
1   0.0004  247496  {main}( )   ../index.php:0
2   0.0024  273008  include( '/Applications/XAMPP/xamppfiles/htdocs/tech_support/product_manager/product_list.php' )    ../index.php:20

这是product_list php。

<?php include '../view/header.php'; ?>

    <h1>Product List</h1>

        <!-- display a table of products -->
        <h2><?php echo $products; ?></h2>

            <tr>
                <th>Code</th>
                <th>Name</th>
                <th>Version</th>
                 <th>Release Date</th>
                <th>&nbsp;</th>
            </tr>
            <?php foreach ($products as $product) : ?> //<-----line 15
            <tr>
                <td><?php echo $product['product_id']; ?></td>
                <td><?php echo $product['name']; ?></td>
                <td class="right"><?php echo $product['version']; ?></td>
                <td><form action="." method="post">
                    <input type="hidden" name="product_id"
                           value="<?php echo $product['releaseDate']; ?>">
                    <input type="submit" value="Delete">
                </form></td>
            </tr>
            <?php endforeach; ?>

        <p><a href="?action=show_add_form">Add Product</a></p>


<?php include '../view/footer.php'; ?>

下面是我在索引文件夹中的代码。

<?php
require('../model/database.php');
require('../model/product_db.php');

$action = filter_input(INPUT_POST, 'action');
if ($action === NULL) {
    $action = filter_input(INPUT_GET, 'action');
    if ($action === NULL) {
        $action = 'list_products';
    }
}

 if ($action == 'list_products') {
    $product_id = filter_input(INPUT_GET, 'product_id', 
            FILTER_VALIDATE_INT); 
    if ($product_id == NULL || $product_id == FALSE) {
        $product_id = 1;
    }
  $products = get_product($product_id);
    include('product_list.php');    
}
 else if ($action == 'show_add_form') {
    $product = get_product($product_id);
    include('product_add.php');    
.......

以防这是我的数据库功能

<?php


function get_product($product_id) {
    global $db;
    $query = 'SELECT * FROM products
              WHERE productCode = :product_id';
    $statement = $db->prepare($query);
    $statement->bindValue(":product_id", $product_id);
    $statement->execute();
    $products = $statement->fetch();
    $statement->closeCursor();
    return $products;
}
?>

2 个答案:

答案 0 :(得分:0)

如果$products是一个对象,您可以尝试对其进行类型转换,然后再循环使用它:

$array = (array) $yourObject;

答案 1 :(得分:0)

正在调查:

PDO Fetch

它返回一个数据数组,而不是预期的对象。

所以,试着

var_dump( $products );

看看它到底是什么......一个对象或一个数组。

希望有所帮助。