PHP の初心者であり、Robin Nixon の PHP、MySQL、Javascript の本を読んでいます。PHPスクリプトを使用してデータを挿入および削除する例、特に作者が$_POSTを使用する方法に問題があります。
この例は、複数の入力を持つ書籍のレコードの追加/削除の非常に単純な例です。コードは次のとおりです。
if (isset($_POST['delete']) && isset($_POST['isbn']))
{
$isbn = get_post('isbn');
$query = "DELETE FROM classics WHERE isbn='$isbn'";
if (!mysql_query($query, $db_server))
echo "DELETE failed: $query<br />" .
mysql_error() . "<br /><br />";
}
if (isset($_POST['author']) &&
isset($_POST['title']) &&
isset($_POST['category']) &&
isset($_POST['year']) &&
isset($_POST['isbn']))
{
$author = get_post('author');
$title = get_post('title');
$category = get_post('category');
$year = get_post('year');
$isbn = get_post('isbn');
$query = "INSERT INTO classics VALUES" .
"('$author', '$title', '$category', '$year', '$isbn')";
if (!mysql_query($query, $db_server))
echo "INSERT failed: $query<br />" .
mysql_error() . "<br /><br />";
}
echo <<<_END
<form action="sqltest.php" method="post"><pre>
Author <input type="text" name="author" />
Title <input type="text" name="title" />
Category <input type="text" name="category" />
Year <input type="text" name="year" />
ISBN <input type="text" name="isbn" />
<input type="submit" value="ADD RECORD" />
</pre></form>
_END;
$query = "SELECT * FROM classics";
$result = mysql_query($query);
if (!$result) die ("Database access failed: " . mysql_error());
$rows = mysql_num_rows($result);
for ($j = 0 ; $j < $rows ; ++$j)
{
$row = mysql_fetch_row($result);
echo <<<_END
<pre>
Author $row[0]
Title $row[1]
Category $row[2]
Year $row[3]
ISBN $row[4]
</pre>
<form action="sqltest.php" method="post">
<input type="hidden" name="delete" value="yes" />
<input type="hidden" name="isbn" value="$row[4]" />
<input type="submit" value="DELETE RECORD" /></form>
_END;
}
mysql_close($db_server);
function get_post($var)
{
return mysql_real_escape_string($_POST[$var]);
}
?>
$_POST の要素を if (isset($_POST['delete']) && isset($_POST['isbn'])) で参照すると、delete と isbn が名前として複数回使用されます。削除するために参照する要素を知っていますか? 一度に 1 つのレコードしか削除できないため、配列内の要素は既に設定されている要素を自動的に指すと思います。しかし、isset($_POST['isbn']) の 2 番目の条件は、チェックする「isbn」要素をどのように判断するのでしょうか? && は $_POST['isbn'] を正しい行に「継承」させますか?
助けてくれてありがとう!そして、語彙の誤用の可能性についてお詫び申し上げます。まだすべてに慣れています。