数据库表UPDATE表单不起作用

时间:2015-04-16 20:59:10

标签: 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
}
?>

我通过url获取$ id变量,例如edit-form.php?id = 123 上面的代码与第一个代码完全相同,与成功相呼应,对数据库信息无效。

编辑: 好吧,我想我可能会解决。我使用了我的代码的第一个版本(这里是第一个版本),我把

$id = $_GET["id"];

以上

$name= $_POST['name']; 

似乎有效。

3 个答案:

答案 0 :(得分:2)

我希望这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之后。要进行调试,请在浏览器中打印查询,看看您是否获得了正确的值

答案 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']; 

似乎有效。谢谢大家的帖子!