You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP使用mysqli执行多条MySQL SELECT查询报num_rows非对象错误如何解决

问题原因

mysqli::query()默认不支持一次性执行多条SQL语句,你将两条SELECT语句拼接在同一个字符串中传入该方法时,方法执行失败返回了false而非mysqli_result对象,因此尝试访问false的num_rows属性就触发了非对象属性访问的Notice报错。

解决方案

提供两种可选实现方式,优先推荐方案1:

方案1:合并为单条SQL查询(性能更高,逻辑更简单)

你的两条查询逻辑一致、仅查询的IP值不同,可以直接合并为单条SQL执行,无需使用多查询逻辑:

<?php
require('configuration.php');

// 创建连接
$conn = new mysqli($db_host, $db_username, $db_password, $db_name);
// 检查连接
if ($conn->connect_error) {
  die("连接失败: " . $conn->connect_error);
}

// 合并查询,IN匹配多个IP值
$query = "SELECT * FROM `table` WHERE `ip` IN ('1.1.1.1', '2.2.2.2')";
$result = $conn->query($query);

// 先判断查询返回结果是否为合法对象再操作
if ($result && $result->num_rows > 0) {
  // 输出每行数据
  while($row = $result->fetch_assoc()) {
    echo "ID: " . $row["id"]. "<br>IP:" . $row["dedicatedip"]. "<br><br>";
  }
} else {
  echo "0 结果";
}
$conn->close();

如果需要保留LIKE模糊匹配逻辑,将WHERE条件改为WHERE ipLIKE '1.1.1.1' ORip LIKE '2.2.2.2'即可。

方案2:使用mysqli::multi_query()执行多条查询

如果确实需要分开执行多条独立的SQL语句,可以使用mysqli专门的多查询方法,逐次获取每一条语句的结果集:

<?php
require('configuration.php');

// 创建连接
$conn = new mysqli($db_host, $db_username, $db_password, $db_name);
// 检查连接
if ($conn->connect_error) {
  die("连接失败: " . $conn->connect_error);
}

$query = "SELECT * FROM `table` WHERE `ip` LIKE '1.1.1.1';";
$query .= "SELECT * FROM `table` WHERE `ip` LIKE '2.2.2.2'";

// 执行多查询
if ($conn->multi_query($query)) {
  do {
    // 获取当前查询的结果集
    if ($result = $conn->store_result()) {
      if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
          echo "ID: " . $row["id"]. "<br>IP:" . $row["dedicatedip"]. "<br><br>";
        }
      } else {
        echo "当前查询无结果<br><br>";
      }
      $result->free();
    }
    // 检查是否存在下一个结果集
  } while ($conn->more_results() && $conn->next_result());
} else {
  echo "查询执行失败:" . $conn->error;
}

$conn->close();

注意:如果SQL中的查询值来自用户输入,必须使用预处理语句做参数绑定,禁止直接拼接字符串到SQL语句中,避免SQL注入风险。

内容的提问来源于stack exchange,提问作者Saeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:15:07