免責事項:これは割り当て用です。私は人々が私に明示的なコードを与えることを求めているのではなく、私が私のエラーを見て、それを修正し、将来同様の間違いを防ぐのに十分な助けを求めています。
私は、データベースにテーブルを作成し、いくつかのエントリを入力してから、フォームを作成し、ユーザーがフォームを介してデータベースを更新できるようにするという割り当てに取り組んでいます(これは非常に基本的なことです)。更新すると、ユーザーは変更を送信した後にエントリを表示する必要があります。
要件の1つは、自動インクリメントの主キーを使用することです。このキーはユーザーにとってそれほど重要ではないため、送信に含める必要はないと思います(したがって、このキーのフィールドはありません)。さらに、自動インクリメントすることになっているため、次のオプションがあります。手動で追加したキーは、実際には意味がありません。
そこで、フィールドとMySQLステートメントの小さなセットをまとめました。これらはすべて機能すると思います。キーを追加するフィールド(この場合はid_no
)があり、そこに手動で値を入力すると、送信はデータベースに正常に保存されます。ただし、そのオプションを削除すると、データベースに何も送信されません。
私の主キーフィールドid_no
は自動インクリメント用にマークされているので、それは問題ではないことに注意する必要があります。私の理解と、エンティティを手動で挿入することで確認したことによると、自動インクリメント値は、insert
ステートメントに含める必要なしに自動的に更新される必要があります。
これが私がこれまでに得たものです(これは私の最初のMySQL / PHP割り当てなので、優しくしてください):
<!DOCTYPE html>
<html>
<head>
<title>Actor Database</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.0/jquery.validate.js"></script>
<script>
$(document).ready(function() {
$("form").validate();
});
</script>
</head>
<body>
<form method="post">
First Name: <input name="first_name" type="text" id="first" class="required" minlength="3">
<br>
Last Name: <input name="last_name" type="text" id="last" class="required" minlength="3">
<br>
<!--ID Number: <input name="id_no" type="text" id="id_num" class="required digits" maxlength="5">
<br>-->
Photo: <input name="photo" type="file" id="photo" class="required">
<br>
<input type="submit" id="submit">
</form>
<?php
$dbhost = '*******************';
$dbname = '*******************';
$dbuser = '*******************';
$dbpass = '*******************';
$mysql_handle = mysql_connect($dbhost, $dbuser, $dbpass)
or die("Error connecting to database server");
mysql_select_db($dbname, $mysql_handle)
or die("Error selecting database: $dbname");
//mysql_query("INSERT INTO Actors(first_name, last_name) VALUES('Anne', 'Hathaway')");
$id_no = array_key_exists("id_no", $_REQUEST) ? $_REQUEST["id_no"] : 0;
$first_name = array_key_exists("first_name", $_REQUEST) ? $_REQUEST["first_name"] : '';
$last_name = array_key_exists("last_name", $_REQUEST) ? $_REQUEST["last_name"] : '';
$photo = array_key_exists("photo", $_REQUEST) ? $_REQUEST["photo"] : NULL;
if ($id_no <= 0) {
echo "";
} else if ($id_no > 0) {
$rs = mysql_query("SELECT id_no FROM Actors WHERE id_no = ".$id_no);
if (mysql_numrows($rs) == 0) {
mysql_query("INSERT INTO Actors(id_no, last_name, first_name) VALUES("
. $id_no
. ",'" . mysql_real_escape_string($last_name) . "'"
. ",'" . mysql_real_escape_string($first_name) . "')"
);
} else {
mysql_query("UPDATE Actors
SET last_name = '".mysql_real_escape_string($last_name). "',
SET first_name = '".mysql_real_escape_string($first_name)."'
WHERE id_no ".$id_no
);
}
}
$results = mysql_query('SELECT id_no, last_name, first_name, photo FROM Actors');
$nrows = mysql_numrows($results);
echo "<table>";
for ($i = 0; $i < $nrows; $i++) {
echo "<tr>";
echo "<td>".htmlspecialchars(mysql_result($results, $i, "first_name")). " " .htmlspecialchars(mysql_result($results, $i, "last_name"))."</td>";
echo "</tr>";
}
echo "</table>";
mysql_close($mysql_handle);
?>
</body>
</html>