它是 Mysqli 中的错误吗 - 部分结果

Posted

技术标签:

【中文标题】它是 Mysqli 中的错误吗 - 部分结果【英文标题】:Is it a bug in Mysqli - partial result 【发布时间】:2018-12-27 13:18:55 【问题描述】:

执行时的mysqli准备语句只返回部分结果,即。在 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】:

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

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

但仍然不确定它为什么会发生。用 mysqli 猜它的 bug。

【讨论】:

以上是关于它是 Mysqli 中的错误吗 - 部分结果的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的MySQLi扩展学习MySQLI_result对象操作

它是 Hbase REST API `get version/cluster` 中的错误吗?

MySQLi中的计数[重复项]

php.ini 中的默认 php mysqli 连接

mysqli_query 上的未定义变量

PHP中的MySQLi扩展学习MySQLI_STMT对象操作