2016-08-30 45 views
0

我目前正在为一个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; ?> 
+1

'':id'=> $ _POST ['id']'from where这是从哪里来的?我无法看到你的表格,或者我太困了? –

+0

我认为Hendra Nucleo是正确的。你的表单不提供'id'添加,因为隐藏的输入可能会使事情工作。目前您正在尝试更新id = NULL的位置。在开发过程中,您可能需要添加print_r($ _ POST)以准确查看表单提供的内容。 –

回答

0

从我可以从你的代码了解,更新查询是不是能够得到id,因此无法更新数据库的价值。如果您试图创建一个允许用户更新关于不同用户的信息的管理系统,那么您应该在浏览器的隐藏输入字段中传递值id,否则,如果只允许用户更新他/她的个人资料详细信息那么您可以从会话中检索用户标识,例如​​,前提是您在用户首次登录时在会话中存储了id信息。

+0

这对我来说是什么。 ”>谢谢。我可以继续下一步。简单的错误。 – Grus