我读过大约 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
}
?>
我通过像edit-form.php?id=123这样的url获取$id变量 上面的代码与第一个代码完全相同,回显成功并且对数据库信息不执行任何操作。
编辑: 好吧,我想我可以解决这个问题。我使用了代码的第一个版本(这里是第一个版本),然后我把
$id = $_GET["id"];
以上
$name= $_POST['name'];
看起来有效。
最佳答案
希望这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 之后。为了调试在浏览器中打印查询,看看您是否获得了正确的值
关于php - 数据库表更新表单不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685830/