foreach()中的警告无效

时间:2012-08-15 02:57:23

标签: php mysql web

我是php的新手,今年夏天学习了一个PHP编程课程,我想知道是否有人可以帮我弄清楚我需要做些什么才能让事情发挥作用。

我正在研究最终项目,我们必须在我们想要的主题上构建我们的小数据库。所以我选择做一个电影数据库。我从murach的php书中使用了my_guitar_shop的一些代码。这是Murach的php和mysql书。出于某种原因,当我访问index.php页面时,我无法将我的信息显示在我的页面上的表格中。

我将向您展示我的索引页面的代码

<?php
require_once('database.php');
if (isset($_POST['deleteThis'])) {
    $deleteThis = $_POST['deleteThis'];
    $sqlDel="DELETE FROM categories WHERE categoryID = $deleteThis";
    $temp=$db->exec($sqlDel);

}


// Get all categories
$query = 'SELECT * FROM categories
ORDER BY categoryID';
$categories = $db->query($query);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
    xmlns="http://www.w3.org/1999/xhtml">

<!-- the head section -->
<head>
<title>My Movie Store</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>

<!-- the body section -->
<body>
    <center>
        <div id="heading">My Movie Store</div>
    </center>

    <div id="page">

        <div id="header">
            <h1>Top Movies</h1>
        </div>

        <div id="main">

            <h1>Movie List</h1>
            <table class="content">
                <tr>
                    <th>Title</th>
                    <th>Date</th>
                    <th>&nbsp;</th>
                </tr>

                <?php foreach($categories as $cat) {
                    ?>
                <tr>
                    <td><?php echo $cat['categoryName'];?>
                    </td>

                    <form method="post" action="category_list.php">
                        <input type="hidden" name="deleteThis"
                            value="<?php echo $cat['categoryID']; ?> " />
                        <td></td>
                        <td><input type="submit" value="Delete" />
                        </td>
                    </form>

                    <?php
                }
                ?>

            </table>
            <br />

            <h2>Add a Movie</h2>

            <!-- add code for the form here -->

            <p>
                <a href="add_product_form.php">Add Movie</a>
            </p>

            <br />
            <p>
                <a href="index.php">Movie List</a>
            </p>

        </div>
        <!-- end main -->

        <div id="footer">
            <p>
                &copy;
                <?php echo date("2012"); ?>
                My Movie Store, created by Kara Holey
            </p>
        </div>

    </div>
    <!-- end page -->
</body>
</html>

我的数据库名称叫做moviedatabase,我在localhost / phpmyadmin中创建,而我在数据库下面的2个表称为类别和电影。由于某种原因,thsi是我在这个页面上得到的错误。

警告:在第82行的C:\ xampp \ htdocs \ 1306 \ finalp \ index.php中为foreach()提供的参数无效

如果有人能帮助我那会很棒。

3 个答案:

答案 0 :(得分:0)

foreach循环中的变量$ categories不是有效的集合,这就是为什么php会给你这个错误。你需要看看$categories到底是什么。

我怀疑它可能是从您的查询返回的资源,或者可能是null。

答案 1 :(得分:0)

$categories = $db->query($query) // this is your problem

我认为你的foreach()没有收到有效数组。尝试使用您创建的静态数组进行故障排除!!

示例make

$categories = array("A","B");
foreach($categories as $value){
   echo $value."<br/>";    
}

答案 2 :(得分:0)

如果您正在使用PDO,这可能意味着您的查询失败,$db->query()的输出为false

为了避免这个问题,我建议启用异常处理:

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

您可以将其添加到database.php。如果查询失败并且有关失败原因的详细信息,那么这样做会产生一个非常明显且难以忽略的异常。