【问题标题】:How to check if MySQL results returned empty in PHP?如何检查 MySQL 结果是否在 PHP 中返回为空?
【发布时间】:2015-11-06 07:15:39
【问题描述】:

如何检查 MySQL 结果是否为空。如果 MySQL 查询结果为空,则不应执行 else 条件。 如果 MySQL 在那里产生数据并且在其他情况下我的错误我的消息在那里,但它没有显示任何错误消息。 我尝试了以下代码,但没有在屏幕上显示任何警报或回显消息。

<?php
$sql = "select * from hall_search_data_1 where rent BETWEEN '".$_SESSION['amount1']."' AND '".$_SESSION['amount2']."'";
$res = mysql_query($sql);
if (!empty($res)) {
    while ($row = mysql_fetch_row($res)) {
        // here my data
    }
} else {
    echo "no results found";
}

【问题讨论】:

    标签: php mysql


    【解决方案1】:
    <?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    $sql = "SELECT id, firstname, lastname FROM MyGuests";
    $result = $conn->query($sql);
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            echo "id: " . $row["id"] . " - Name: " . $row["firstname"] . " " . $row["lastname"] . "<br>";
        }
    } else {
        echo "0 results";
    }
    $conn->close();
    ?>
    

    【讨论】:

    • 关于这个答案的附加信息:mysqli_result 类有一个 num_rows 方法,可以用面向对象的样式调用:int|string $mysqli_result->num_rows;程序风格:mysqli_num_rows(mysqli_result $result): int|string 来源:php.net/manual/en/mysqli-result.num-rows.php
    【解决方案2】:

    检查行数

    $result = mysqli_query($conn, $sql);
    $rowcount=mysqli_num_rows($result); 
    if($rowcount > 0){ 
      echo "Number of rows = " . $rowcount;
      }
      else
      { 
      echo "no record found"; 
      }
    

    【讨论】:

      【解决方案3】:

      您可以使用mysql_num_rows 获取查询返回的行数。

      if(mysqli_num_rows($res) > 0)
      {
          // rest of your stuff
      }
      else
      {
          echo "No records found.";
      }
      

      注意: mysql 已被弃用,而是使用mysqliPDO,如上所示

      【讨论】:

        【解决方案4】:

        安全提示首先停止使用mysql_* 函数,因为它们对生产不安全,并且更高版本已停止支持此 API。因此,如果您不小心在生产中使用了这些功能,那么您可能会遇到麻烦。

        不建议在新开发中使用旧的 mysql 扩展,因为它在 PHP 5.5.0 中已被弃用并在 PHP 7 中被删除。下面提供了详细的功能比较矩阵。 More Read

        对于您的答案,您只需检查 no of rows 是否为零 通过示例阅读php documentation 的这篇文章。

        mysqli_num_rows

        【讨论】:

          【解决方案5】:

          mysql_* API 很久以前就从 PHP 中删除了。要访问数据库,您应该使用 PDO。检查 PDO 是否返回任何结果实际上非常简单。 只需获取结果,如果数组为空,则 MySQL 没有返回任何内容。

          $stmt = $pdo->prepare('SELECT * FROM hall_search_data_1 WHERE rent BETWEEN ? AND ?');
          $stmt->execute([$_SESSION['amount1'], $_SESSION['amount2']]);
          $records = $stmt->fetchAll();
          if ($records) {
              foreach ($records as $row) {
                  // your logic
              }
          } else {
              echo 'No records found!';
          }
          

          还有 mysqli 库,如果你无法使用它,你必须做更多的工作,但想法是一样的。获取所有结果,如果没有获取任何结果,则意味着 MySQL 没有返回任何行。

          $stmt = $mysqli->prepare('SELECT * FROM hall_search_data_1 WHERE rent BETWEEN ? AND ?');
          $stmt->bind_param('ss', $_SESSION['amount1'], $_SESSION['amount2']);
          $stmt->execute();
          $records = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
          if ($records) {
              foreach ($records as $row) {
                  // your logic
              }
          } else {
              echo 'No records found!';
          }
          

          【讨论】:

            【解决方案6】:

            您可以使用mysql_num_rows(); 来检查您的查询是否返回行

            $sql = "select * from hall_search_data_1 where rent BETWEEN '".$_SESSION['amount1']."' AND '".$_SESSION['amount2']."'";
            $res = mysql_query($sql);
            $rows=mysql_num_rows($res);
            if($rows>0)
            {
               echo "data return from query";
            }else{
            
            echo "data not return";
            }
            

            注意:- 不推荐使用 mysql,而是使用 mysqli 或 PDO

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-04-01
              • 2020-11-13
              • 1970-01-01
              • 2021-11-10
              • 2012-05-27
              • 2013-05-09
              • 2014-04-13
              相关资源
              最近更新 更多