更新查询不会更新,但运行时不显示错误
问题描述:
我目前正在为一个php用户管理系统工作。我能够创建新用户。我可以更新我登录的用户帐户 - 名字,姓氏,电子邮件和密码。我创建了一个可以在表格中生成用户信息的页面。 它显示用户标识,用户名,名字,姓氏,电子邮件地址以及删除和编辑链接。删除脚本起作用。编辑链接转到表单,以便我可以更新用户信息。我遇到的问题是:当我更新用户的信息时,它不会在数据库中更新它。 我只能更新用户的信息,如果我以该用户身份登录。我正在使用会话,我认为这与我的问题有关。这是代码。我按下提交来更新用户信息后运行此脚本。任何帮助,将不胜感激。谢谢。更新查询不会更新,但运行时不显示错误
<?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; ?>
答
从我可以从你的代码了解,更新查询是不是能够得到id
,因此无法更新数据库的价值。如果您试图创建一个允许用户更新关于不同用户的信息的管理系统,那么您应该在浏览器的隐藏输入字段中传递值id
,否则,如果只允许用户更新他/她的个人资料详细信息那么您可以从会话中检索用户标识,例如,前提是您在用户首次登录时在会话中存储了id
信息。
+0
这对我来说是什么。 ”>谢谢。我可以继续下一步。简单的错误。 – Grus
'':id'=> $ _POST ['id']'from where这是从哪里来的?我无法看到你的表格,或者我太困了? –
我认为Hendra Nucleo是正确的。你的表单不提供'id'添加,因为隐藏的输入可能会使事情工作。目前您正在尝试更新id = NULL的位置。在开发过程中,您可能需要添加print_r($ _ POST)以准确查看表单提供的内容。 –