更新查询不会更新,但在运行时不会显示错误

时间:2016-08-30 16:32:23

标签: php html mysql css utf-8

我目前正在使用php用户管理系统进行工作。我能够创建新用户。我能够更新我登录的用户帐户 - 名字,姓氏,电子邮件和密码。我创建了一个在表格中生成用户信息的页面。 它显示用户ID,用户名,名字,姓氏,带有删除和编辑链接的电子邮件地址。删除脚本有效。编辑链接转到表单,以便我可以更新用户信息。我遇到的问题是:当我更新用户的信息时,它没有在数据库中更新它。 如果我以该用户身份登录,我只能更新用户的信息。我正在使用会话,我认为它与我的问题有关。这是代码。在我按提交更新用户信息后运行此脚本。任何帮助,将不胜感激。感谢。

<?php

require("connect.php");

if(empty($_SESSION['user'])) {
header("Location: ../hound/login.php");
die("Redirecting to ../hound/login.php");
}

 $array_value = array(
    ':email' => $_POST['email'],
    ':first_name' => $_POST['first_name'],
    ':last_name' => $_POST['last_name'],
    ':id' => $_POST['id']
  );

  $query = "UPDATE users 
    SET 
    email = :email,
    first_name = :first_name, 
    last_name = :last_name
    WHERE
      id = :id";

  try {
    $stmt = $db->prepare($query);
    $result = $stmt->execute($array_value);
  }
 catch(PDOException $ex) {
 die("Failed to run query: " . $ex->getMessage());
 }
 header("Location: users.php");
 die("Redirecting to users.php");

 ?>

这是编辑用户信息的表单。按下提交按钮后,它将运行上面的脚本。然后返回名为users的页面。

<?php

require("../scripts/common.php");


if(empty($_SESSION['user']))
{

header("Location: ../hound/login.php");


die("Redirecting to ../hound/login.php");
}

$query_parm = array(

':id' => $_GET['id']

);


$query = "

SELECT
*
FROM users 
WHERE 
id = :id
";


try
{
$stmt = $db->prepare($query);
$stmt->execute($query_parm);

 }
 catch (PDOException $ex)
 {

 die("Failed to run query: " . $ex->getMessage());

  }

 $rows = $stmt->fetchAll();


  ?>

 <form action="../scripts/edit_users.php" method="post">

  <?php foreach($rows as $row): ?>

  Username:<br />
 <b><?php echo htmlentities($row['username'], ENT_QUOTES, 'UTF-8'); ?></b>
 <br /><br />
 First Name:<br />
 <input type="text" name="first_name" value="<?php echo htmlentities($row['first_name'], ENT_QUOTES, 'UTF-8'); ?>" />
 <br /><br />
 Last Name:<br />
 <input type="text" name="last_name" value="<?php echo htmlentities($row['last_name'], ENT_QUOTES, 'UTF-8'); ?>" />
 <br /><br />
  E-Mail Address:<br />
  <input type="text" name="email" value="<?php echo htmlentities($row['email'], ENT_QUOTES, 'UTF-8'); ?>" />
   <br /><br />
   Password:<br />
   <input type="password" name="password" value="" /><br />
   <br /><br />
   <input type="submit" value="Update User" />
   <a href="../scripts/users.php">Back</a><br />
   <?php endforeach; ?>

1 个答案:

答案 0 :(得分:0)

从我的代码中可以理解,更新查询无法获取id的值,因此无法更新数据库。如果您正在尝试创建一个允许用户更新有关不同用户的信息的管理系统,那么您应该在浏览器的隐藏输入字段中传递id的值,否则如果允许用户仅更新他的/她的个人资料详细信息然后您可以从会话中检索用户ID,例如':id' => $_SESSION["id"],前提是您在用户首次登录时已在会话中存储了id信息。