使用PHP-7.1 MySQLi扩展统计MySQL中相同值的记录数
没问题,这事儿用PHP 7.1的MySQLi扩展轻松就能搞定,我给你两种常用的实现方式,都是精准针对你的需求——只统计num字段值为9837的记录总数,完全不用返回ID:
方法一:MySQLi 面向对象写法
这种写法更符合现代PHP的面向对象风格,代码结构清晰:
<?php // 数据库连接信息,替换成你自己的配置 $host = 'localhost'; $dbname = '你的数据库名'; $username = '你的用户名'; $password = '你的密码'; // 创建数据库连接 $conn = new mysqli($host, $username, $password, $dbname); // 检查连接是否成功 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 准备查询语句,用COUNT(*)统计效率最高,无需返回实际数据 $sql = "SELECT COUNT(*) AS total FROM records WHERE num = ?"; $stmt = $conn->prepare($sql); // 绑定参数(这里num是整数类型,所以用'i'标识) $targetNum = 9837; $stmt->bind_param("i", $targetNum); // 执行查询 $stmt->execute(); // 获取结果并提取总数 $result = $stmt->get_result(); $row = $result->fetch_assoc(); echo $row['total']; // 这里会输出你期望的3 // 关闭资源,避免内存泄漏 $stmt->close(); $conn->close(); ?>
方法二:MySQLi 过程式写法
如果你更习惯过程式的代码风格,也可以用这种写法:
<?php // 数据库连接信息 $host = 'localhost'; $dbname = '你的数据库名'; $username = '你的用户名'; $password = '你的密码'; // 创建连接 $conn = mysqli_connect($host, $username, $password, $dbname); // 检查连接状态 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } // 准备查询语句 $sql = "SELECT COUNT(*) AS total FROM records WHERE num = ?"; $stmt = mysqli_prepare($conn, $sql); // 绑定参数 $targetNum = 9837; mysqli_stmt_bind_param($stmt, "i", $targetNum); // 执行查询 mysqli_stmt_execute($stmt); // 绑定结果变量并提取总数 mysqli_stmt_bind_result($stmt, $total); mysqli_stmt_fetch($stmt); echo $total; // 输出统计结果3 // 关闭资源 mysqli_stmt_close($stmt); mysqli_close($conn); ?>
几个关键细节提醒:
- 优先用
COUNT(*)而非COUNT(id),前者在MySQL中执行效率更高,因为不需要额外检查字段是否为NULL - 全程用预处理语句(
prepare+bind_param),哪怕这次是固定值,也能规避SQL注入风险,养成良好的编码习惯 - 记得把代码里的数据库连接信息替换成你自己的实际配置
内容的提问来源于stack exchange,提问作者user8667024
相关产品推荐
相关产品推荐

