【问题标题】:Error when updating data into a database [duplicate]将数据更新到数据库时出错[重复]
【发布时间】:2016-01-17 21:21:02
【问题描述】:

我正在尝试创建一个管理员页面,管理员必须在用户登录之前批准用户注册。我正在尝试在此页面中显示所有已注册但仍在等待管理员批准登录的用户因此,我想在每个未确认的用户附近创建一个按钮,其值为“是”,以使管理员能够批准他的帐户。如果管理员设置了“是”按钮,则用户应获得批准,因此 @987654321 @ 存储在我的数据库中的字段应该更新为 1。这就是想法。执行代码时,会显示按钮,但不会对字段 approval 进行更新!

按钮也显示但不起作用。有人可以帮助我使“是”按钮起作用吗? 这是我的代码:

<html >
<head>
<title></title>
</head>

<body>
<?php
if( !($database=mysql_connect("localhost","root",""))||!(mysql_select_db("st_login",$database))  )
   print("Could not connect");
if(isset($_POST['yes'])){

     $id = intval($_POST['id']);
$update_query= "UPDATE login SET `approval`=1 WHERE `id` = '".$id."'";
mysql_query($update_query,$database);
 }

$query = "SELECT * FROM `login` WHERE `admin` =0";
 if(!($result=mysql_query($query,$database)))
{
    print("Could not execute query");
    die (mysql_error());//ose error
} else
  while($query_row=mysql_fetch_assoc($result))
  {

 $firstname=$query_row['firstname'];
$lastname=$query_row['lastname'];
$username=$query_row['username'];
$password=$query_row['password'];
$email=$query_row['email'];
$cv=$query_row['cv'];
$id=$query_row['id'];

if($query_row['approval']==0){
  echo "this user is waiting for you approval";
echo $firstname.'   '.$lastname.'  has this cv:'.$cv.'<br />
Do you want to approve his account?
<form action="admin.php" method="post">
<input  type="text" style="display: none;" value="$id" name="id">
<input  type="submit" value="yes" name="yes">
</form>
<br/>';
}
}
mysql_close($database);
?>
</body>
</html>

有人帮助我进行此次更新吗?提前致谢!

【问题讨论】:

  • 请同时显示 HTML 代码
  • 这是我在这个管理页面的所有代码。

标签: php database button post get


【解决方案1】:

将按钮改为

<form action="admin.php" method="post"><input type="submit" value="'.$id.'" name="id"></form><br />';

这样整个回声就会

echo $firstname.' '.$lastname.' has this cv:'.$cv.'<br /> Do you want to approve his account? <form action="admin.php" method="post"><input type="submit" value="'.$id.'" name="id"></form><br />';

表单元素的name$_POST 数组中的键,value$_POST['id'] 的值

此外,您应该使用$_POST 而不是$_GET,因为您已将表单方法指定为post

【讨论】:

  • 完全不能这样工作
  • 你现在遇到的错误是什么?
  • 这应该是整个 echo 命令,包括按钮。
  • 好的,按钮已显示,但数据库中的approval 字段未更新
  • 我认为这部分代码有问题:if(isset($_POST['yes'])){ $id = intval($_POST['id']); $update_query= "更新登录 SET approval=1 WHERE id = '".$id."'"; }
【解决方案2】:

您应该更改代码的最后一部分。您的表单方法是 POST,但您正试图通过 GET 获取 id。你不能这样做,你不能像这样从输入中获取 id。

这是你应该做的:

if($query_row['approval']==0){
  echo "this user is waiting for you approval";
echo $firstname.'   '.$lastname.'  has this cv:'.$cv.'<br />
Do you want to approve his account?
<form action="admin.php" method="post">
<input  type="hidden" value="$id" name="id">
<input  type="submit" value="yes" name="yes">
</form>
<br/>';
}

}
mysql_close($database);
?>

然后就行了

$id = intval($_GET['id']);

应该变成

 $id = intval($_POST['id']);

【讨论】:

  • @phiterFernandez 我试过了,但按钮仍然显示但不起作用,因此approval 字段没有更新!
  • 啊你没有关闭输入标签,我会更新我的答案
  • 标签没有问题,但仍然没有更新
猜你喜欢
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 2012-10-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多