0

私はphpを初めて使用し、この夏学期にphpプログラミングクラスを受講していましたが、物事を機能させるために何をする必要があるかを誰かが理解するのを手伝ってくれるかどうか疑問に思っていました.

私は最終的なプロジェクトに取り組んでおり、私たちが望んでいた主題に関する小さなデータベースを構築する必要がありました。そこで、映画データベースを作成することにしました。そして、murach の php book の 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>

私のデータベース名は、localhost/phpmyadmin で作成した moviedatabase と呼ばれ、データベースの下にある 2 つのテーブルはカテゴリと映画と呼ばれます。何らかの理由で、これがこのページで表示されるエラーです。

警告: C:\xampp\htdocs\1306\finalp\index.php の 82 行目の foreach() に無効な引数が指定されています

誰かが私を助けることができれば、それは素晴らしいことです。

4

3 に答える 3

0

PDO を使用している場合、これはおそらくクエリが失敗し、の出力が であることを意味し$db->query()ますfalse

この問題を回避するには、例外処理を有効にすることをお勧めします。

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

これを に追加できますdatabase.php。これを行うと、クエリが失敗し、失敗した理由の詳細が示されている場合に、非常に明白で見逃すのが難しい例外が生成されます。

于 2012-08-15T03:56:00.880 に答える
0
$categories = $db->query($query) // this is your problem

foreach()有効な配列を受け取っていないと思います。作成した静的配列でトラブルシューティングを試してください!!

作例

$categories = array("A","B");
foreach($categories as $value){
   echo $value."<br/>";    
}
于 2012-08-15T03:21:11.063 に答える
0

ループ内の変数 $categories はforeach有効なコレクションではないため、php でこのエラーが発生します。何$categoriesが本当なのかを見る必要があります。

クエリから返されたリソースであるか、null であるとは思えません。

于 2012-08-15T03:05:39.527 に答える