私のウェブサイトは phpbb フォーラムと統合されており、1 つの php ファイルと 1 つのテンプレートを使用して、データベース内のさまざまな行を使用して一意のページを表示しようとしています。サンプル ファイルは次のようになります。
php ファイル:
<?php
include "includes/phpbb.php";
$template->set_filenames(array(
'body' => 'people.html',
));
$name = $_GET['name'];
$result = $db->sql_query("SELECT * FROM people WHERE name = $name");
while($row = $db->sql_fetchrow($result))
{
$template->assign_vars(array(
'NAME' => $row['name'],
'AGE' => $row['age'],
));
}
$site->page_footer();
?>
html テンプレートは次のとおりです。
<!-- INCLUDE overall_header.html -->
{NAME} is {AGE} years old.
<!-- INCLUDE overall_footer.html -->
テーブルに 2 つの行があります。一人は「51」歳の「ウォルト」、もう一人は「25」歳の「ジェシー」。people.php?name=Walt のような URL を入力すると、エラー ページが表示されます。
SQL ERROR [ mysqli ]
Unknown column 'Walt' in 'where clause' [1054]
SQL
SELECT * FROM people WHERE name = Walt
任意の種類の数値を入力すると、ページは正常に表示されますが、変数が入力されていないため、ページには「歳です」と表示されます。?name=name と入力すると、データベース テーブルの 2 番目の行が表示され、「ジェシーは 25 歳です」と表示されます (これには本当に困惑します)。
これを引き起こすために何が間違っていますか?私は明らかに、URL に「Walt」または「Jesse」を入力して、それらの情報の行だけでページ全体を取得できるようにしたいと考えています。