这是Mysqli中的错误-部分结果

时间:2018-07-19 11:52:58

标签: php mysql mysqli

执行时,mysqli prepare语句仅返回部分结果,即。在fetch()$ hash,$ type保留其值,但$ userId保持为空时,此问题仅在已准备好的语句中出现。

if($statement=$this->db->prepare("SELECT `id`,`password`,`type` FROM `login` WHERE `username`=?")){
   $statement->bind_param("s",$username);
   if($statement->execute()){
     $statement->bind_result($userId,$hash,$type);
     if($statement->fetch()){
       if(password_verify($password, $hash)){
         $this->userId=$userId;
         if($type=='u')
            return true;
       }else {
         $this->error(11);
       }
     }else
       $this->error(5);
   }else
    $this->error(4);
 }else
   $this->error(3);

1 个答案:

答案 0 :(得分:0)

我通过将id转换为CHAR来解决了问题

SELECT CAST(`id` AS CHAR),`password`,`type` FROM `login` WHERE `username`=?

但仍然不确定为什么会发生。通过mysqli猜测其错误。