使用PHP与phpMyAdmin求数据库总价时显示1的错误排查
问题分析与修正
你的代码错误在于用了mysqli_num_rows()获取结果行数,而非SUM计算出的总价:
SUM(Total)这类聚合查询,无论表中有没有数据,都会返回1行结果(哪怕总和为0,或者表为空时总和为NULL)mysqli_num_rows()返回的是结果集的行数,所以你得到的1是结果行数,不是实际总价
修正后的代码
<?php $connection = new mysqli("localhost", "root", "", "inventory"); // 检查数据库连接是否成功 if ($connection->connect_error) { die("连接失败: " . $connection->connect_error); } $dash_sales_query = "SELECT SUM(Total) AS total_sum FROM salesp"; $dash_sales_query_run = mysqli_query($connection, $dash_sales_query) or die(mysqli_error($connection)); // 获取查询结果行 $row = mysqli_fetch_assoc($dash_sales_query_run); // 处理空表或无有效数据的情况,默认显示0 $sales_total = $row['total_sum'] ?? 0; if ($sales_total > 0) { echo '<span class="bold">' . $sales_total . '</span>'; } else { echo '<span class="bold">No Data</span>'; } // 关闭数据库连接 mysqli_close($connection); ?>
关键修正点
- 给SUM结果起别名
AS total_sum,方便后续通过关联数组获取计算值 - 使用
mysqli_fetch_assoc()提取结果行中的总价,替代获取行数的逻辑 - 增加数据库连接错误检查,避免连接失败时的潜在问题
- 处理
SUM(Total)返回NULL的场景(表为空时),用?? 0将默认值设为0
内容的提问来源于stack exchange,提问作者Eldyssss
相关产品推荐
相关产品推荐

