看起来这个代码一切正常,但实际上无法更新数据库,数据在获取数据时正确显示但是当我按下更新按钮时数据消失但没有执行更新。它看起来不错,但我觉得我错了。 这是我教授的一个项目,所以我不关心SQL注入和其他人。
<html>
<head>
<link rel="stylesheet" type="text/css" href="btnstyle.css">
<title>Managament System</title>
</head>
<body>
<h1>TU Chemnitz Student managament system</h1>
<br>
<a href="insert_form.html" class="myButton">ADD Person</a>
<a href="insert_form.html" class="myButton">Edit Person</a>
<a href="insert_form.html" class="myButton">Manage Boards</a>
<a href="insert_form.html" class="myButton">Manage Departments</a>
<a href="search_personel.html" class="myButton">Search N&S</a>
<a href="three_search.html" class="myButton">Triple Search</a>
<a href="mtable.php" class="myButton">Membership</a>
<br>
<br>
<?php
// set database server access variables:
$host = "localhost";
$user = "";
$pass = "";
$db = "";
// open connection
$connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
// select database
mysql_select_db($db) or die ("Unable to select database!");
// create query
$querys = "SELECT * FROM tblperson";
// execute query
$result = mysql_query($querys) or die ("Error in query: $query. ".mysql_error());
echo "<table border=1 align=center>
<tr>
<th>Personal ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Deparment</th>
<th>Board</th>
<th>Marticulation Number</th>
<th>Reg Date</th>
<th>Action</th>
</tr>";
while($row = mysql_fetch_array($result)) {
?>
<?php
echo '<tr>';
echo '<td>'. $row['personid'].'</td>';
echo '<td>'. $row['personname'].'</td>';
echo '<td>'. $row['personsurname'].'</td>';
echo '<td>'. $row['persondepartment'].'</td>';
echo '<td>'. $row['personboard'].'</td>';
echo '<td>'. $row['martinumber'].'</td>';
echo '<td>'. $row['personregdate'].'</td>';
echo '<td>'.'<a href="edit20.php?edit='.$row['personid'] . '"> EDIT </a> '.'</td>';
}
?>
</body>
</html>
这是编辑文件似乎有问题。
<?php
include_once('coneksioni.php');
if(isset($_GET['edit']))
{
$personid = $_GET['edit'];
$res = mysql_query("SELECT * FROM tblperson WHERE personid='$personid'");
$row = mysql_fetch_array($res);
}
if(isset($_POST['newpersonname']))
{
$newpersonname = $_POST['newpersonname'];
$personid = $_POST['personid'];
$sql = "UPDATE tblperson SET personname = '$newpersonname' WHERE personid = '$personid'";
$res = mysql_query($sql) or die ("Cant be updated");
echo "< meta http-equiv='refresh' content='0;url=home.php'>";
}
?>
<form action="edit20.php" method="POST">
<table border="0">
<tr>
<td>First Name</td>
<td><input type="text" name="newpersonname" value="<?php echo $row[1];?>" maxlength="30" size="13"></td>
</tr>
<tr>
<td>Last Name</td>
<td> <input type="text" name="personsurname" value="<?php echo $row[2];?>" maxlength="30" size="30"></td>
</tr>
<tr>
<td>Department</td>
<td>
<select name='persondepartment'>
<option>Production</option>
<option>Sales</option>
</select>
</td>
</tr>
<tr>
<td>Board</td>
<td>
<select name='personboard'>
<option>Evaluation</option>
<option>Executive</option>
<option>Research</option>
</select>
</td>
</tr>
<tr>
<td>Marticulation Number</td>
<td> <input type="text" name="martinumber" maxlength="60" size="30"></td>
</tr>
<tr>
<td>Date of Registration</td>
<td><input type="date" name="personregdate" maxlength="7" size="7"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value=" Update"></td>
</tr>
</table>
</form>
答案 0 :(得分:0)
当您在edit20.php中的表单上按下更新按钮时,您正在寻找personid,但该值从未设置过,因此它将为空并且更新将失败。
在
<form action="edit20.php" method="POST">
添加:
<input type="hidden" name="personid" value="<?php echo $personid; ?>">
答案 1 :(得分:0)
在编辑页面上,您似乎混淆了具有不同值的相同变量。如果您声明$ personid变量以包含来自get的编辑值,则只需重新使用该变量不要分配新值。在此行中,您可以指定新值:
$personid = $_POST['personid'];
不要分配新值,因为它已经使用了初始值,只需将变量设置为全局使用
$personid = $_GET['edit'];
或者创建一个隐藏元素并将编辑值传递给它。
答案 2 :(得分:0)
请为更新按钮添加名称属性
<td colspan="2"><input type="submit" name="update" value=" Update"></td>
并确定更新按钮是否设置或重置为
if(isset($_POST['newpersonname'])) // change text 'newpersonname' as 'update'
答案 3 :(得分:0)
您使用的是一个不会激活的变量:
<?php
include_once('coneksioni.php');
if(isset($_GET['edit']))
{
$personid = $_GET['edit'];
$res = mysql_query("SELECT * FROM tblperson WHERE personid='$personid'");
$row = mysql_fetch_array($res);
}
if(isset($_POST['newpersonname']))
{
$newpersonname = $_POST['newpersonname'];
$personid = $_POST['personid']; // this doesn't excist
$sql = "UPDATE tblperson SET personname = '$newpersonname' WHERE personid = '$personid'";
$res = mysql_query($sql) or die ("Cant be updated");
echo "< meta http-equiv='refresh' content='0;url=home.php'>";
}
?>
$personid = $_POST['personid'];
并不会在您的代码中出现问题。它只是你放在那里的一段代码可能是进程,但忘了在代码中定义变量。将以下内容放在表单中。
<input type="hidden" name="personid" value="<?php echo $_GET['edit']; ?>">
你只使用一次,因为你在处理后将表格寄回家,因此它不再使用了。您还可以在该位置使用您定义为$personid;
的可用值。
如果失败,您的查询可能会出错。在执行sql查询后,只需执行echo $sql
,尝试回显查询(删除qucikly元命令)。 10次中有9次,这是一个错字。