初学者。
我面临的问题是现在变得相当乏味,尽管我这样做是一种爱好,过去几天我一直困在这一点,并试图到处寻找解决方案。 我甚至完全修改了我的代码,遵循其他示例/教程。
这是我最接近的。
所有内容都填写完毕,表单已提交。它表示成功,但当我返回页面时,该字段尚未更新。我甚至直接检查了数据库,以确保输出显示没有错误。但它也没有出现在那里。
(我的表中还有其他条目,但我只想让这个页面编辑其中一个)。
任何帮助指出我的错误,为什么会非常感激。最好知道我哪里出错了所以我将来可以留意它。
<?php
$host="****"; // Host name
$username="****"; // Mysql username
$password="****"; // Mysql password
$db_name="****"; // Database name
$tbl_name="****"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// get value of id from the address bar
$id=$_GET['id'];
// get value of modname from the form
$modname=$_POST['modname'];
// update data in mysql database
$sql = "UPDATE $tbl_name SET modname='$modname' WHERE id='$id'";
$result=mysql_query($sql);
// if successfully updated.
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='edit.php'>Return to overview</a>";
}
else {
echo "ERROR";
}
?>
带有表单的页面。
<?php
$host="****"; // Host name
$username="****"; // Mysql username
$password="****"; // Mysql password
$db_name="****"; // Database name
$tbl_name="****"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// get value of id that sent from address bar
// Retrieve data from database
$sql="SELECT modname FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
<form name="form1" method="post" action="update_ac.php">
<input name="modname" type="text" id="modname"></td>
<br>
<input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>">
<br>
<input type="submit" name="Submit" value="Submit">
</form>
答案 0 :(得分:0)
即使您的id
字段是表单中的隐藏字段,它仍然作为POST属性发送,因此您需要$_POST['id']
来检索值(而不是$_GET['id']
)。< / p>
另外,你应该把表和列名放在`逗号中,像这样;
$sql = "UPDATE `$tbl_name` SET `modname`='$modname' WHERE `id`='$id'";
但是,您的代码也对SQL注入开放。阅读this question并重写您的代码。
答案 1 :(得分:0)
在这种情况下,您的查询是可靠的,语法是正确的,但您的变量不包含您期望的值。由于您正在学习,我想提供一些建议和示例代码。
样品:
所以您最初从查询字符串中获取id
,例如http://domain.com/get_id.php?id=1
?如果是这样,您的代码应该可以正常运行,只需确保您的URL正确形成即可。如果您从&lt; id
获取form>
,那么它应该是$_POST
。
// get value of id from the address bar
if(!empty($_GET['id'])) {
$id=$_GET['id'];
} else {
echo "ID is empty";
}
// get value of modname from the form
if(!empty($_POST['modname'])) {
$modname=$_POST['modname'];
} else {
echo "ID is empty";
}
// update data in mysql database
$sql = "UPDATE $tbl_name SET modname='$modname' WHERE id='$id'";
$result=mysql_query($sql);
// if successfully updated.
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='edit.php'>Return to overview</a>";
}
else {
echo mysql_error();
}
在您的表单上,您需要选择id
才能echo
。
// Retrieve data from database
$sql="SELECT id,modname FROM $tbl_name WHERE id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
<form name="form1" method="post" action="update_ac.php">
<input name="modname" type="text" id="modname"></td>
<br>
<input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>">
<br>
<input type="submit" name="Submit" value="Submit">
</form>
答案 2 :(得分:-2)
这可以解决您的问题。
$sql = "UPDATE {$tbl_name} SET modname='{$modname}' WHERE id='{$id}'";
希望它有所帮助!