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

从MySQL升级到mysqli后PHP查询无结果,求测试代码修复方案

修复mysqli查询无法获取行数的问题

你的代码存在几处关键问题,导致查询后无法正常返回行数,以下是针对性的修复步骤:

1. 修正连接错误检查的拼写错误

原代码中$link -> connect_errorno是拼写错误,正确的属性名为connect_errno,这个错误会导致连接异常判断逻辑失效:

if ($link->connect_errno) {
    echo "failed to connect to database " . $link->connect_error;
    exit();
}

2. 增加查询结果有效性检查

mysqli_query执行失败时会返回false,直接对false调用mysqli_num_rows会引发错误,必须先判断查询是否成功:

$result = mysqli_query($link, $query);
if (!$result) {
    echo "Query failed: " . mysqli_error($link);
    exit();
}
$numrows = mysqli_num_rows($result);
echo " Number of rows = ". $numrows;

3. (推荐)设置数据库连接字符集

连接成功后添加字符集配置,避免因字符集不匹配导致的查询异常:

mysqli_set_charset($link, 'utf8mb4');

完整修复后的代码

<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=windows-1252" http-equiv="Content-Type">
<title>Data Access Test</title>
<?php
  $servername = "localhost";
  $username = "*********";
  $password = "##########";
  $dbname = "xxxxxxxxxxx";
  $link = mysqli_connect($servername, $username, $password, $dbname);
  
  // 修正连接错误检查拼写
  if ($link->connect_errno)
  {
    echo "failed to connect to database " . $link->connect_error;
    exit();
  }
  else
  {
    echo "success";
  };

  // 设置字符集
  mysqli_set_charset($link, 'utf8mb4');

  echo "trying query";
  $query = "SELECT * FROM administrative where 1";
  echo $query;
  
  // 检查查询是否成功
  $result = mysqli_query($link, $query);
  if (!$result) {
      echo "Query error: " . mysqli_error($link);
      exit();
  }
  
  $numrows = mysqli_num_rows($result);
  echo " Number of rows = ". $numrows;
?>
</head>
<body>
</body>
</html>

修复后,若查询存在错误会直接输出错误信息,方便排查;若查询成功则会正常显示行数。如果仍然显示行数为0,需要确认administrative表是否真的没有数据,或者表名是否存在大小写匹配问题(MySQL表名的大小写敏感性取决于操作系统和配置)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 22:22:35