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

PHP数据库查询仅执行最新行问题:如何遍历所有符合条件的行?

解决PHP数据库查询仅处理最新行的问题

你的问题

你现在遇到的困扰是:你的PHP代码查询数据库中符合条件的域名数据,但始终只处理最后一行(最新行),哪怕尝试加了循环也没用,希望能遍历所有符合条件的行。

问题根源

看你的代码,核心问题出在变量赋值的逻辑上:

$domainnames = "domainurl"; 
$domaindate = "expirationdate"; 
while ($row = mysqli_fetch_array($query)) { 
 $domainnames = $row['domainurl']; // list of expiring URLs 
 $domaindate = $row['expirationdate']; // list of expiry dates 
} 

你每次循环都把$domainnames和$domaindate这两个变量直接覆盖成当前行的值,而不是把每一行的数据保存起来。循环结束后,这两个变量自然就只剩下最后一行的数据,根本没留存之前的行内容。

修正方案

你需要用数组来存储每一行的数据,循环时把每一行的内容追加到数组末尾,而不是覆盖变量。修改后的完整代码如下:

<?php
$db = mysqli_connect("" , "", "") or die("Check connection parameters!"); 
mysqli_select_db($db,"ds_main") or die(mysqli_error($db)); 
if (mysqli_connect_error()) { 
 die ('Failed to connect to MySQL'); 
} 

$sqlCommand = "SELECT companyname, domainurl, expirationdate FROM domains WHERE expirationdate BETWEEN CURDATE() AND CURDATE()+INTERVAL 30 DAY"; 
$query = mysqli_query($db, $sqlCommand) or die (mysqli_error($db)); 

// 初始化两个空数组,用来存储所有符合条件的行数据
$domainnames = []; 
$domaindates = []; 

while ($row = mysqli_fetch_array($query)) { 
 // 把当前行的数据追加到数组末尾
 $domainnames[] = $row['domainurl']; 
 $domaindates[] = $row['expirationdate']; 
} 

// 遍历数组处理每一条数据
if (!empty($domainnames)) { 
    foreach ($domainnames as $index => $url) {
        $expiryDate = $domaindates[$index];
        // 在这里执行你的业务任务,比如打印或发送提醒
        echo "域名:{$url},到期日期:{$expiryDate}<br>";
    }
} 

// 释放结果集并关闭数据库连接
mysqli_free_result($query); 
mysqli_close($db); 
?>

额外优化建议

  1. 你也可以直接在while循环内处理每一行数据,不用先把所有数据存到数组里,这样更节省内存:
while ($row = mysqli_fetch_array($query)) { 
    $url = $row['domainurl'];
    $expiryDate = $row['expirationdate'];
    // 直接在这里执行任务
    echo "域名:{$url},到期日期:{$expiryDate}<br>";
} 
  1. 建议使用mysqli_fetch_assoc()代替mysqli_fetch_array(),这样只会返回关联数组(即$row['key']形式),避免拿到不必要的索引数组,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:44:47