Php 仅更新最后插入的值
我只是一个PHP新手,我正在尝试创建一个忘记密码函数,我有以下代码Php 仅更新最后插入的值,php,mysql,Php,Mysql,我只是一个PHP新手,我正在尝试创建一个忘记密码函数,我有以下代码 <?php $con = mysql_connect("localhost","root",""); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("inventory", $con); $a=$_POST['password']; $b=$_POST['newpassword']; $c=$_
<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("inventory", $con);
$a=$_POST['password'];
$b=$_POST['newpassword'];
$c=$_POST['retypepassword'];
$result = mysql_query("SELECT * from admins " );
while($row = mysql_fetch_array($result))
{
$password = $row['password'] ;
}
if($_POST['retypepassword'] != $b){
echo "<script type='text/javascript'>alert('Password Not match');
window.location.href='forgotpass.php?id=0';
</script>";
exit();
}
if($_POST['password'] != $password){
echo "<script type='text/javascript'>alert('You Provide wrong Password');
window.location.href='forgotpass.php?id=0';
</script>";
exit();
}
else {
mysql_query("UPDATE admins SET password = '$b'
WHERE password = '$a' ");
header("location: index.php?id=0");
};
?>
我相信问题出在你的
while
循环中。mysql_查询选择表中的所有条目,然后对它们进行迭代,因此最终将得到表中的最后一个条目。您的查询需要如下所示:
$result = mysql_query("SELECT * from admins WHERE id = $id"); <-- added WHERE clause
$result=mysql\u查询(“从管理员中选择*,其中id=$id”) 将帐户ID放在两个查询中,并正确转义变量以避免
正如另一位用户所说,mysql_*扩展已被弃用,我建议您改用
connection.php
<?php
define("DB_SERVER", "localhost");
define("DB_USER", "root");
define("DB_PASS", "");
define("DB_NAME", "inventory");
?>
<?php
require("constants.php");
try {
$con = new PDO('mysql:host=' . DB_SERVER . ';dbname=' . DB_NAME, DB_USER, DB_PASS,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",PDO::ATTR_PERSISTENT => true));
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(PDOException $e)
{
echo 'Could not connect: ';
echo $e->getMessage();
}
?>
<?php
include("connection.php");
$id=$_POST['id'];
$password=$_POST['password'];
$newpassword=$_POST['newpassword'];
$retypepassword=$_POST['retypepassword'];
$sql = "SELECT * FROM admins WHERE id = :id";
$sth = $dbh->prepare($sql);
$sth->bindValue(':id', $id, PDO::PARAM_INT);
$sth->execute();
while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
$db_password = $row['password'] ;
}
if($retypepassword != $newpassword){
echo "<script type='text/javascript'>alert('Password Not match');
window.location.href='forgotpass.php?id=0';
</script>";
exit();
}
if($password != $db_password){
echo "<script type='text/javascript'>alert('You Provide wrong Password');
window.location.href='forgotpass.php?id=0';
</script>";
exit();
}else {
$sql = "UPDATE admins SET password = :newpassword WHERE id = :id";
$sth = $dbh->prepare($sql);
$sth->bindValue(':newpassword', $newpassword, PDO::PARAM_STR);
$sth->bindValue(':id', $id, PDO::PARAM_INT);
$sth->execute();
if($sth){
header("location: index.php?id=0");
}
};
?>
your_file.php
<?php
define("DB_SERVER", "localhost");
define("DB_USER", "root");
define("DB_PASS", "");
define("DB_NAME", "inventory");
?>
<?php
require("constants.php");
try {
$con = new PDO('mysql:host=' . DB_SERVER . ';dbname=' . DB_NAME, DB_USER, DB_PASS,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",PDO::ATTR_PERSISTENT => true));
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch(PDOException $e)
{
echo 'Could not connect: ';
echo $e->getMessage();
}
?>
<?php
include("connection.php");
$id=$_POST['id'];
$password=$_POST['password'];
$newpassword=$_POST['newpassword'];
$retypepassword=$_POST['retypepassword'];
$sql = "SELECT * FROM admins WHERE id = :id";
$sth = $dbh->prepare($sql);
$sth->bindValue(':id', $id, PDO::PARAM_INT);
$sth->execute();
while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
$db_password = $row['password'] ;
}
if($retypepassword != $newpassword){
echo "<script type='text/javascript'>alert('Password Not match');
window.location.href='forgotpass.php?id=0';
</script>";
exit();
}
if($password != $db_password){
echo "<script type='text/javascript'>alert('You Provide wrong Password');
window.location.href='forgotpass.php?id=0';
</script>";
exit();
}else {
$sql = "UPDATE admins SET password = :newpassword WHERE id = :id";
$sth = $dbh->prepare($sql);
$sth->bindValue(':newpassword', $newpassword, PDO::PARAM_STR);
$sth->bindValue(':id', $id, PDO::PARAM_INT);
$sth->execute();
if($sth){
header("location: index.php?id=0");
}
};
?>
我已经回答了,但无法发布我的答案,因为这是我自己的问题。我需要等8个小时才能回答我自己的问题哈哈:D。它们不再维护了。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果你选择PDO,你选择了问题的答案吗?