首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库表更新表单不起作用

数据库表更新表单不起作用
EN

Stack Overflow用户
提问于 2015-04-17 04:59:10
回答 3查看 1.1K关注 0票数 0

我已经阅读了大约10个关于如何更新数据库信息的教程,我已经尝试了至少3种不同的方法,但都没有效果。下面的代码总是回显“成功”,但如果我检查数据库,它不会更新。

代码语言:javascript
运行
复制
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
}
?>

我不知道我在做什么wrong...any帮助将不胜感激!

编辑:我考虑了您的意见,并编辑了我的代码

代码语言:javascript
运行
复制
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
}
?>

我通过像$id -form.php?id=123这样的url获取编辑变量。上面的代码和第一个完全一样,回显成功,不处理数据库信息。

编辑:好的,我想我可以解决这个问题。我使用了我的代码的第一个版本(这里的第一个),并且我把

代码语言:javascript
运行
复制
$id = $_GET["id"];

上图

代码语言:javascript
运行
复制
$name= $_POST['name']; 

它似乎起作用了。

EN

回答 3

Stack Overflow用户

发布于 2015-04-17 05:04:53

希望这5点能对你有所帮助。

  1. 您的echo "Success">";不在条件大括号中。无论数据是否更新,都会显示成功,always
  2. mysql_select_db和mysql_query都已折旧。使用mysqliPDO而不是尝试使用mysqli_select_db?它应该在查询之前。这就是没有更新的原因。请按以下顺序尝试

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 ));

  • Are你在WHERE id='$id'中得到了正确的$id值。正如我所看到的,$id = $_GET["id"];的目标是SQL。为了进行调试,在浏览器中打印查询,请查看您是否获得了正确的值
票数 2
EN

Stack Overflow用户

发布于 2015-04-17 05:12:03

您还需要输入id。如果你不想让它对用户可见,你可以把它作为一个隐藏字段放入,这样你的表单将是:

代码语言:javascript
运行
复制
<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">
票数 0
EN

Stack Overflow用户

发布于 2015-04-17 06:17:31

好的,我想这可能会解决我的问题。我使用了我的代码的第一个版本(这里的第一个),并且我把

代码语言:javascript
运行
复制
$id = $_GET["id"];

上图

代码语言:javascript
运行
复制
$name= $_POST['name']; 

它似乎起作用了。感谢大家的帖子!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29685830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档