KevinYankの本「PHPandMySQLNovice to Ninja 5th edition」を読んでいて、コードにエラーが見つかりました。誰かに手伝ってもらいたいのですが、ばかげたタイプミスかもしれません...?
私は、ジョークのデータベースを作成してアクセスするという作者の例に従おうとしています。2つのデータベースを結合して、すべてのジョークのリストをphpで表示する方法を学んでいます。私は2つのデータベースのジョークと作者を持っています。私はこれを持っています:
try{
$sql = 'SELECT joke.id, joketext, jokedate, name, email
FROM joke INNER JOIN author
ON authorid = author.id';
$result = $pdo->query($sql);
}
catch (PDOException $e)
{
$error = 'Error: ' . $e->getMessage();
include 'error.html.php';
exit();
}
foreach ($result as $row)
{
$jokes[] = array(
'id' => $row['id'],
'text' => $row['joketext'],
'date' => $row['jokedate'],
'name' => $row['name'],
'email' => $row['email']
);
}
include 'jokes.html.php';
これで、1つのテーブルからデータベース情報を選択する単純なコードをINNER JOINコードに置き換えるまで、すべてが正常に機能していました。これは私が従った本のコードです。
jokes.html.phpファイルに、これがあります(これが、エラーの原因だと思います)。
foreach($jokes as $joke):
<form action="?deletejoke" method="post">
<?php
echo 'id. ';
echo htmlspecialchars($joke['id'], ENT_QUOTES, 'UTF-8');
echo htmlspecialchars($joke['date'], ENT_QUOTES, 'UTF-8');
echo htmlspecialchars($joke['text'], ENT_QUOTES, 'UTF-8');
echo htmlspecialchars($joke['name'], ENT_QUOTES, 'UTF-8');
echo htmlspecialchars($joke['email'], ENT_QUOTES, 'UTF-8');
?>
<input type="hidden" name="id" value="<?php echo $joke['id'];?>">
<input type="submit" value="Borrar">
?>
<br></form>
<?php endforeach; ?>
今、私をスローするエラーは次のとおりです。
注意:未定義の変数:10行目のC:\ xampp \ htdocs \ worksheet1\jokes.html.phpのジョーク
警告:10行目のC:\ xampp \ htdocs \ worksheet1 \ jokes.html.phpのforeach()に無効な引数が指定されました
jokes.html.phpの10行目は次のとおりです。
foreach($jokes as $joke):
foreach()に関する詳細情報を取得しようとしていますが、エラーを見つけることができません...誰かが私を少し助けてくれるなら(または手がかりになるかもしれません!)、私は非常に感謝しています。ありがとう!!!ロザムンダ
アップデート:
クエリの結果(phpmyadminから直接試行)はゼロであったため、そのクエリのデータベース結果はありませんでした。これを行うことで、1つの結果を手動で追加することにしました。
INSERT INTO joke SET
joketext = 'this is a new joke....',
jokedate = '2012-01-01',
authorid = 1;
これで、エラーが消え、その1つの結果が表示されます。
私が理解していないのは:
これらのエラーの代わりに、結果が表示されなかったのはなぜですか?
これらの状況をどのように管理しますか?つまり、クエリの結果がまったくない場合がありますが、これらのエラーが発生するのは一般的ですか?
役立つコメントの1つは、$ resultが空であると言っています...では、クエリがゼロでない場合、これらのエラーが表示されないのはなぜですか?
助けてくれてありがとう!!! ロザムンダ