从我能告诉你的查询是错误的。
您需要添加要更新的行的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>';
}
?>
您不想运行该查询。 (几乎?)在更新中始终有一个where子句。此查询按原样将所有用户密码更新为提交的密码。你为什么需要'SELECT password FROM users'? – chris85
这不应该起作用,因为要更新字段,您需要一个id字段或其他唯一字段 –
查看更新语法,https://dev.mysql.com/doc/refman/5.0/en/update.html。 'UPDATE TABLE_NAME SET COLUMN ='VALUE'WHERE COLUMN ='VALUE''。请注意,where子句很重要,即将更新多少行。在你的情况下,我会认为'userid =?'假设'userid'是唯一的。您也不应以纯文本格式存储密码。 – chris85