免责声明:这是一个任务。我不是要求人们给我明确的代码,只是为了获得足够的帮助,以便我可以看到我的错误,纠正它,并防止将来发生类似的错误。
我正在做一个任务,要求我在数据库中创建一个表,用一些条目填充它,然后创建一个表单并允许用户通过表单更新数据库(这是非常基本的东西。)除了更新时,用户应该在提交更改后看到他们的条目。
要求之一是使用自动递增的主键。由于此密钥对用户没有真正的重要性,我认为没有必要将其包含在提交中(因此没有字段。)此外,由于它应该自动递增,因此可以选择手动添加的密钥实际上没有意义。
因此,我将一小部分字段和 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>