php - 数据库表更新表单不起作用

标签 php html mysql forms

我读过大约 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点对你有帮助

  1. 您的echo "Success">";不在条件大括号中。无论数据是否更新都会显示成功

  2. mysql_select_db 和 mysql_query 均已折旧。使用mysqliPDO相反,尝试使用 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

    或者

  3. 您可能喜欢用一行来完成

    $conn = mysqli_connect("host","user","password","my_db") or die("Error " . mysqli_error($conn ));

  4. 您得到的 $id 的值是否正确?在WHERE id='$id' 。据我所知$id = $_GET["id"];在 SQL 之后。为了调试在浏览器中打印查询,看看您是否获得了正确的值

关于php - 数据库表更新表单不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29685830/

相关文章:

javascript - 使用 HTML5 在拖放中切换内容

mysql - Bash 脚本 : Save into mysql database

PHP explode 排除

php - 使用 PHP 和 xPath 从 HTML 中提取数据

mysql中的PHP注册表

javascript - 悬停在一个单独的元素上时如何在一个元素上添加/删除类?

javascript - 当用户滚动到特定元素时触发事件 - 使用 jQuery

mysql - 在 InfoBright ICE 中加载数据时遇到问题

mysql - 如果 ID 不在数组/逗号分隔列表中,则获取行

javascript - Maplace.js 谷歌地图不会显示在 Bootstrap 选项卡上