PHP mysql,更新记录失败,但没有错误

时间:2018-07-31 22:14:41

标签: php mysql

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本地主机上。

2 个答案:

答案 0 :(得分:2)

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

$updated = $mysqli->affected_rows();

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

答案 1 :(得分:0)

<?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");
    }
?>