php mysql,更新记录失败但无错误

h9vpoimq  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(236)

php-mysql,更新记录失败但没有错误。

$sql = "UPDATE users SET password='$new_password' WHERE email='$email' AND id='$uId'";

//if ($mysqli->query($sql)) also result in True
if ($mysqli->query($sql) === TRUE) {  
    $_SESSION['test6'] = $mysqli->error;  
    $_SESSION['message'] = "Your  password have been updated!";  
    header("location:gain.php");  
    }  
else {  
    $_SESSION['test7'] = "Error updating record: " . $mysqli->error;  
  }

我知道它为什么不更新,错误的值在 WHERE 条款。如果值是正确的,它会很好地更新。但无论更新是否成功,当它失败时,任何地方都看不到错误 $mysqli->query($sql)true .
如何捕捉错误?
我是新来的,我可能应该看看pdo或者它叫什么,但是mysqli不应该给出某种错误吗?这是在xampp本地主机上。

gblwokeq

gblwokeq1#

您没有收到错误,因为没有错误,您的搜索条件与任何结果都不匹配。如果要获取受查询影响的行数,请使用 affected_rows() .

$updated = $mysqli->affected_rows();

if ( $updated == 0 ) {
    echo "None were updated!";
}
idv4meu8

idv4meu82#

<?php    
/* from userpage.php, user change password. */
require $_SERVER['DOCUMENT_ROOT'].'/script/_db.php';
date_default_timezone_set("Europe/Stockholm");
setlocale(LC_ALL,'sv_SE.utf8');

$curEmail = $mysqli->escape_string($_POST['curEmail']);
$uId = $mysqli->escape_string($_POST['uId']);

$myQ = "SELECT * FROM `users` WHERE users.email = '$curEmail'";
$result = $mysqli->query($myQ);
$user = $result->fetch_assoc();

if(password_verify($_POST['password1'], $user['password'])) {
    if ( $_POST['password2'] == $_POST['password3'] ) {
        $new_password = password_hash($_POST['password2'], PASSWORD_BCRYPT);

        $sql = "UPDATE users SET password='$new_password' WHERE email='$curEmail' && id='$uId'";

        $resupdat = $mysqli->query($sql);
        $afRows = $mysqli->affected_rows;
        if ($resupdat === TRUE && $afRows > 0) {
            $_SESSION['message'] = "Ditt lösenord har uppdaterats!";
            header("location:gain.php");
            }
        else {
            if($afRows == 0){ 
                $msg = $afRows."/ Password was not updated!";}

            $_SESSION['message'] = "Error updating record: " . $mysqli->error. "<br>".$msg;
            header("location:failure.php");
            }
        }
    else {
        $_SESSION['message'] = "De lösenord du angett matchar inte, försök igen!";
        header("location:failure.php");
        }
    }   
else {
    $_SESSION['message'] = "Fel lösensord, försök igen!";
    header("location:failure.php");
    }
?>

相关问题