2015-07-12 50 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

只是一個參考,這是非常不安全的。如果需要的話,有人可能會刪除整個數據庫。你需要閱讀準備好的陳述。 –