简体   繁体   English

PHP准备的语句错误

[英]PHP prepared statement error

So I'm trying to update some stuff in my database when the user logs on, it seems that everything is fine except the last part, the output I am getting is: 因此,当用户登录时,我正在尝试更新数据库中的某些内容,除最后一部分外,其他一切似乎都很好,我得到的输出是:

"critical error unknown" and "Commands out of sync; you can't run this command now" “未知严重错误”和“命令不同步;您现在不能运行此命令”

Here is my code: 这是我的代码:

<?php
$user = $_POST['username'];
$pass = $_POST['password'];
$connect = mysqli_connect("localhost","myuser","mypass","somedb");
$query = "SELECT `password` FROM `userauth` WHERE `username`=?";
if($stmt = $connect->prepare($query)){
    $stmt->bind_param('s',$user);
    $stmt->execute();
    $stmt->bind_result($tmp_pass);
    $stmt->fetch();
    if($tmp_pass===$pass){
        $letters = array('a','b','*','x','e','d','z','p','@','#');
        $letter_key="";
        for($i=0;$i<sizeof($letters);$i++){
            $letter_key=$letter_key.$letters[rand(1,sizeof($letters-1))];
        }
        $key = rand(1341163,9999999);
        $key2 = rand(3541,9999);
        $complete_key = $key.$letter_key.$key2;
        setcookie("key",$complete_key);
        setcookie("user",$user);
        $query_auth = "UPDATE `userauth` SET `auth_key`=? WHERE `username`=?";
        if($stmt_2 = $connect->prepare($query_auth)){
            $stmt_2->bind_param('ss',$complete_key,$user);
            $stmt_2->execute();
        }else{
            echo "Critical error, unknown ".mysqli_error($connect);
            exit;
        }
        echo "success";
    }else{
        echo "Error Invalid Username or Password";
    }
}else{
    "Database link error";
}
?>

Can someone please explain what might be the problem. 有人可以解释一下可能是什么问题。 yes, all my fields are string. 是的,我所有的字段都是字符串。

在$ stmt-> fetch()之后尝试$ stmt-> close()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM