2015-07-12 54 views
1

尝试设置更新密码功能,一旦你登录并进入配置文件页面,我一直在玩它,但没有任何工作,我没有任何错误,但它doesn不更新数据库。更新密码选项不在数据库中更新

<?php 
if(isset($_POST['submit'])){ 
$newpassword = $_POST['password']; 
if(empty($newpassword)) { 
    echo '<p>Field Empty!</p>'; 
} else { 
$mysqli->query("UPDATE password FROM users WHERE password='$newpassword'"); 
echo "Updated Successfully" 
} 
} 

?> 
+3

您不想运行该查询。 (几乎?)在更新中始终有一个where子句。此查询按原样将所有用户密码更新为提交的密码。你为什么需要'SELECT password FROM users'? – chris85

+0

这不应该起作用,因为要更新字段,您需要一个id字段或其他唯一字段 –

+1

查看更新语法,https://dev.mysql.com/doc/refman/5.0/en/update.html。 'UPDATE TABLE_NAME SET COLUMN ='VALUE'WHERE COLUMN ='VALUE''。请注意,where子句很重要,即将更新多少行。在你的情况下,我会认为'userid =?'假设'userid'是唯一的。您也不应以纯文本格式存储密码。 – chris85

回答

2

从我能告诉你的查询是错误的。

您需要添加要更新的行的ID。你应该在会话中存储哪些内容。

<?php 
if(isset($_POST['submit'])){ 
$newpassword = $_POST['password']; 
if(empty($newpassword)) { 
    echo '<p>Field Empty!</p>'; 
} else { 
$mysqli->query("UPDATE Users SET password='$newpassword' WHERE ID=?"); 
echo "Updated Successfully"; 
} 
} 

?> 

更改我会做,你有一些缺少分号,你需要检查原始帖子的密码。阅读更清洁。

<?php 
    if(isset($_POST['submit']) && isset($_POST['password'])){ 
     $newpassword = $_POST['password']; 

     $mysqli->query("UPDATE Users SET password='$newpassword' WHERE ID=?"); 
     echo "Updated Successfully"; 

    } 
    else { 
     echo '<p>The password field is not filled in.</p>'; 
    } 
    ?> 

我讨厌不安全的页面。这是一个更安全的方法。它可能有错误,我没有测试。

<?php 


     // configuration 
     $dbhost  = "localhost"; 
     $dbname  = "test"; 
     $dbuser  = "root"; 
     $dbpass  = "admin"; 

     // database connection 
     $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); 
    if(isset($_POST['submit']) && isset($_POST['password'])){ 



     // new data 
     $UserID = $_SESSION['UserID']; 
     $Password = $_POST['password']; 

     // query 
     $sql = "UPDATE Users SET password=? WHERE ID=?"; 

     $q = $conn->prepare($sql); 
     $q->bindParam(1, $UserID); 
     $q->bindParam(2, $Password); 
     $q->execute(array($title,$author,$id)); 
    } 
    else { 
     echo '<p>The password field is not filled in.</p>'; 
    } 
?> 
+0

谢谢你的工作!我以前在那里有Id,但我想我犯了一个错误的人,所以我拿出来尝试别的东西,谢谢一堆! – Brian

+0

只是一个参考,这是非常不安全的。如果需要的话,有人可能会删除整个数据库。你需要阅读准备好的陈述。 –