我想在表单中显示所选的ID数据,并在数据库中编辑它和UPDATE。我从数据库中选择了数据并将其放在输入标签中,但它不起作用。请帮忙!
<html>
<body>
<?
$db = mysql_connect("localhost", "root","");
mysql_select_db("db_ncs",$db);
$id = $_GET['s_id'];
if($id)
{
$result=mysql_query("SELECT * FROM tbl_student WHERE s_id=$id");
$row = mysql_fetch_assoc($result);
}
?>
<form method="post" action="update.php">
Name:<input type="Text" name="name" value="<?php echo $row['s_name'];?>" /><br>
Contact:<input type="Text" name="contact" value="<?php echo $row['s_contact'];?>" /><br>
Address:<input type="Text" name="address" value="<?php echo $row['s_address'];?>" /><br>
E-mail:<input type="Text" name="email" value="<?php echo $row['s_email'];?>" /><br>
<input type="submit" name="update" value="Update">
</form>
<?
if(isset($_POST['update']))
{
$name = $_POST['s_name'];
$contact = $_POST['s_contact'];
$address = $_POST['s_address'];
$email = $_POST['s_email'];
$sql = "UPDATE tbl_student
SET (s_name='$name', s_contact='$contact', s_address='$address', s_email='$email')
WHERE s_id=$id";
$res = mysql_query($sql);
if($res)
{
echo "Upadate Successfull!";
}
else
{
echo "Sorry!";
}
}
?>
</body>
</html>
答案 0 :(得分:2)
你忘了通过身份证。
在<form>
代码之间添加此内容。
<input type="hidden" name="s_id" value="<?php echo $id;?>" />
您还需要使方法保持一致。表单通过method="get"
提交数据,但您是通过$_POST
提出的。您还需要通过在适当的位置添加或删除“s_”来使输入名称与您要求的名称一致。
答案 1 :(得分:0)
在表单中,您有method="get"
但在PHP代码中使用$_POST
。尝试定义您的表单如下:
<form method="post" action="update.php">
您的SQL查询应该是(添加引号):
$sql = "UPDATE tbl_student
SET (s_name='$name', s_contact='$contact', s_address='$address', s_email='$email')
WHERE s_id=$id";
尝试在mysql_query
之后添加此内容:
$result = mysql_query($sql) or die(mysql_error());
答案 2 :(得分:0)
不是您问题的答案,但我必须在您的代码中指出一些遗漏:
如果设置了$_POST['update']
,那并不意味着还设置了其他变量。如果用户没有在字段中输入任何内容,则它们可以为空。您应该使用isset
或empty
检查是否设置了每个$_POST
或$_GET
个变量。
你的代码太不安全了!在查询中使用它之前,您应该转义每个变量。请使用mysql_real_escape_string()
。我还建议您使用strip_tags()
以及转义。
答案 3 :(得分:0)
他不是必须使用$row = mysql_fetch_assoc($result)
来获得结果吗?
// Perform Query
$result = mysql_query($query);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
// Use result
// Attempting to print $result won't allow access to information in the resource
// One of the mysql result functions must be used
// See also mysql_result(), mysql_fetch_array(), mysql_fetch_row(), etc.
while ($row = mysql_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
http://php.net/manual/en/function.mysql-query.php
上面只是一个例子。
更新
$result=mysql_query("SELECT * FROM tbl_student WHERE s_id=$id");
$row = mysql_fetch_assoc($result); // I think you have to add this line here, don't you?
?>
<form method="post" action="update.php">
<input type="hidden" name="s_id" value="<?php echo $id;?>" />
Name:<input type="Text" name="name" value="<?php echo $row['s_name'];?>" /><br>
Contact:<input type="Text" name="contact" value="<?php echo $row['s_contact'];?>" /><br>
Address:<input type="Text" name="address" value="<?php echo $row['s_address'];?>" /><br>
E-mail:<input type="Text" name="email" value="<?php echo $row['s_email'];?>" /><br>
<input type="submit" name="update" value="Update">
</form>
更新2:
当你要更新时,那里的方法$id = $_GET['s_id'];
仍在寻找一个名为's_id'的参数将通过HTTP GET来实现,但事实并非如此!
快速解决方法可能是这样,
<form method="post" action="update.php?<?php echo $id;?>">
并且不要忘记添加,
在$id= $_POST['s_id'];
之后 $email = $_POST['s_email'];
!
更新3:
嗯,你仍然需要这个<input type="hidden" name="s_id" value="<?php echo $id;?>" />
并且不要忘记添加,
$id= $_POST['s_id'];
之后 $email = $_POST['s_email'];
!
答案 4 :(得分:0)
您的表单中包含name="contact"
等字段,但是当您尝试获取使用$_POST['s_contact']
的值时。这些需要匹配。
您需要表单中隐藏的s_id字段的原因是您将更新已编辑的同一行。您的UPDATE语句包含WHERE s_id=$id
,因此您需要以这种方式获取原始ID。它是隐藏的,因为您不希望用户在编辑时能够更改ID。