在json数组中返回预准备语句错误

时间:2016-04-12 21:57:54

标签: php json mysqli

我试图了解是否有办法在json中返回准备好的语句mysqli错误。以下是我的代码。即使sql实际上没有工作,代码也会返回数组中的form_pass。

if($pass){
$stmt2 = mysqli_stmt_init($con);
$sql = 'UPDATE `users` SET `fname` = ?,`lname` = ?,`email` = ?,`username` = ?,`password` = ?,`active` = ?,`enc` = ? WHERE `id` = ?';
if(mysqli_stmt_prepare($stmt2,$sql)){
    mysqli_stmt_bind_param($stmt2,'sssssiii',$fname,$lname,$email,$username,$password,$active,$ran,$id);
    mysqli_stmt_execute($stmt2);
    if(mysqli_stmt_affected_rows($stmt2) == 0){
        $return_arr['error_msg'] = mysqli_stmt_error($stmt2);
    } else {
        $return_arr['form_pass'] = 'true';
    }
}
}
print json_encode($return_arr);

我尝试过使用像

这样的东西
if(!mysqli_stmt_execute($stmt2)){
 $return_arr['error_msg'] = mysqli_stmt_error($stmt2);
}

if(mysqli_stmt_error($stmt2)){
 $return_arr['error_msg'] = mysqli_stmt_error($stmt2);
}

1 个答案:

答案 0 :(得分:0)

如果SQL失败,mysqli_stmt_affected_rows将返回-1,而不是0。请尝试使用此if语句。

if(mysqli_stmt_affected_rows($stmt2) <= 0){