我已经阅读了10个关于如何更新数据库信息的教程,我尝试了至少3种不同的方法,但没有任何作用。下面的代码总是回显“成功”,但如果我检查数据库则不会更新。
if(isset($_POST['update']))
{
$dbhost = 'host';
$dbuser = 'user';
$dbpass = 'password';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$name= $_POST['name'];
$sql = "UPDATE table SET name='$name' WHERE id='$id'";
mysql_select_db('my_db');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not update data: ' . mysql_error());
}
echo "Success">";
mysql_close($conn);
}
else
{
include"db.inc.php";
$id = $_GET["id"];
$order = "SELECT * FROM table where id='$id'";
$result = mysql_query($order);
$row = mysql_fetch_array($result);
}
?>
<form id="update" name="update" method="post" role="form" action="">
<input type="text" id="name" name="name" value="<? echo "$row[name]"?>" />
<input name="update" type="submit" id="update" value="Save">
</form>
<?php
}
?>
我不知道我做错了什么......任何帮助都会受到赞赏!
编辑:我考虑了你的意见并编辑了我的代码
if(isset($_POST['update']))
{
$dbhost = 'host';
$dbuser = 'user';
$dbpass = 'password';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$name= $_POST['name'];
mysql_select_db('my_db');
$sql = "UPDATE table SET name='$name' WHERE id='$id'";
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not update data: ' . mysql_error());
}
else{
echo "Success";}
mysql_close($conn);
}
else
{
include"db.inc.php";
$id = $_GET["id"];
$order = "SELECT * FROM table where id='$id'";
$result = mysql_query($order);
$row = mysql_fetch_array($result);
}
?>
<form id="update" name="update" method="post" role="form" action="">
<input type="text" id="name" name="name" value="<? echo "$row[name]"?>" />
<input name="update" type="submit" id="update" value="Save">
</form>
<?php
}
?>
我通过url获取$ id变量,例如edit-form.php?id = 123 上面的代码与第一个代码完全相同,与成功相呼应,对数据库信息无效。
编辑: 好吧,我想我可能会解决。我使用了我的代码的第一个版本(这里是第一个版本),我把
$id = $_GET["id"];
以上
$name= $_POST['name'];
似乎有效。
答案 0 :(得分:2)
我希望这5点能帮到你
您的echo "Success">";
不在条件括号中。无论数据是否得到更新,它都会显示成功
mysql_select_db和mysql_query都已折旧。使用mysqli
或PDO
代替mysqli_select_db
?它应该在查询之前。 这就是为什么SQL没有更新的原因。尝试按此顺序
mysqli_select_db($conn,'my_db');
$sql = "UPDATE table SET name='$name' WHERE id='$id'";
供参考http://php.net/manual/en/mysqli.select-db.php
或者
您可能希望在一行中完成
$conn = mysqli_connect("host","user","password","my_db") or die("Error " . mysqli_error($conn ));
您是否在$id
中获得了WHERE id='$id'
的正确值。我看到$id = $_GET["id"];
在SQL之后。要进行调试,请在浏览器中打印查询,看看您是否获得了正确的值
答案 1 :(得分:0)
您还需要输入ID。如果您不想让用户看到它,您可以将其作为隐藏字段放入,以便您的表单可以:
<form id="update" name="update" method="post" role="form" action="">
<input type="hidden" id="id" name="id" value="<? echo "$row[id]"?>" />
<input type="text" id="name" name="name" value="<? echo "$row[name]"?>" />
<input name="update" type="submit" id="update" value="Save">
答案 2 :(得分:0)
好的,我想我可能会解决。我使用了我的代码的第一个版本(这里是第一个版本),我把
$id = $_GET["id"];
以上
$name= $_POST['name'];
似乎有效。谢谢大家的帖子!