【问题标题】:mysqli returns empty result - how to displaymysqli 返回空结果 - 如何显示
【发布时间】:2012-10-29 16:13:50
【问题描述】:

我有以下 PHP,它基本上得到了 MySQL 查询的结果:

$q2 = "SELECT FIELD FROM TABLENAME WHERE ID = 1;";
$con = new mysqli($server, $user, $pass);
if (mysqli_connect_errno()) 
{
    $error = mysqli_connect_error();
    exit();
}
else
{   
    $res = mysqli_query($con, $q2);
    if ($res)
    {   
        while($row = mysqli_fetch_assoc($res))
        {
            PRINT "THERE WAS A RESULT HERE: "; 
        }
    }
    else
    {
        $error = mysqli_error();
        exit();
    }
    mysqli_free_result($res);   
};
mysqli_close($con);

但有时,它会返回一个空值。这是有效的,基于父应用程序的工作方式,但我如何检测空行并返回“THIS WAS AN EMPTY ROW:”?

【问题讨论】:

  • 请定义“空行”。这是否意味着没有返回任何行?或者在一行中 FIELDNULL 或空字符串 ("")?

标签: php mysqli


【解决方案1】:

您可能需要在 PHP 手册中查找 mysqli_num_rows()。它使您可以查看上一个查询生成的结果集中有多少行。您可以使用行数来确定是显示结果还是显示“无匹配结果”消息。

【讨论】:

    【解决方案2】:

    我希望这会有所帮助。

    if ($res)
    {   
        if($res->num_rows) {
            while($row = mysqli_fetch_assoc($res))
            {
               PRINT "THERE WAS A RESULT HERE: "; 
            }
        }
        else {
              PRINT "THERE WAS A EMPTY ROW: "; 
        }
    }
    

    参考:php.net

    【讨论】:

      【解决方案3】:

      感谢我最终得到的结果:

      $q2 = "SELECT FIELD FROM TABLENAME WHERE ID = 1;";
      $con = new mysqli($server, $user, $pass);
      if (mysqli_connect_errno()) 
      {
          $error = mysqli_connect_error();
          exit();
      }
      else
      {   
      $res = mysqli_query($con, $q2);
      
      $row_cnt = mysqli_num_rows($res);
      
      if ($row_cnt == 0)
      {
              PRINT "THERE WAS NO RESULT: "; 
       }
      
      else
      {    
      if ($res)
      {   
          while($row = mysqli_fetch_assoc($res))
          {
              PRINT "THERE WAS A RESULT HERE: "; 
          }
      }
      else
      {
          $error = mysqli_error();
          exit();
      }
      mysqli_free_result($res);   
      }
      };
       mysqli_close($con);
      

      【讨论】:

        【解决方案4】:

        我的php函数查询句柄:

        private function query($sql_query){
        
                $result = $this->connection->query($sql_query);
        
                if(!$result){           //query fail
                    throw new Exception($this->connection->error.$sql_query);
                }else {//                 "SUCCESS";
                    if(!$result->num_rows)
                    {
                        throw new Exception("THERE WAS NO RESULT: "); 
                     }
                    for ($res = array(); $tmp = $result->fetch_array(MYSQLI_BOTH);){ 
                        $res[] = $tmp;                
                    }
                   return $res;
                }
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-01-25
          • 1970-01-01
          • 2014-08-11
          • 1970-01-01
          • 2015-06-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多