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

PHP开发Telegram Bot时如何同时遍历MySQL用户表的id与name两列

你不需要额外新增循环,直接调整MySQL查询语句就能实现同步遍历id和name字段。

具体实现逻辑

  • 你当前的代码执行了两次对user表的查询,一次用于统计总行数,一次用于提取所有id,本身也可以优化为单次查询减少数据库开销:只需要把查询字段调整为id, name,一次查询同时拿到两个字段的所有数据,直接用结果集的行数作为总用户数即可。
  • 在原有的while循环里,直接通过$row['name']就能取到对应用户的name字段值,不需要额外加循环。

修改后的完整代码示例

// 一次查询同时取id和name,不需要单独查总数
$userResult = mysqli_query($connect, "select id, name from user");
$alltotal = mysqli_num_rows($userResult);
$ids = [];

// 先发送总用户数
api('sendmessage', [
    'chat_id' => $chat_id,
    'text' => "total users : $alltotal",
]);

// 遍历的时候直接同时取id和name
while($row = mysqli_fetch_array($userResult)){
    $ids[] = $row['id'];
    // 修正Telegram MarkdownV2的用户链接格式,用name作为链接显示文本
    api('sendmessage', [
        'parse_mode' => 'MarkdownV2',
        'chat_id' => $chat_id,
        'text' => "[{$row['name']}](tg://user?id={$row['id']})",
    ]);
}

注意事项

如果你的name字段里包含_、*、[、]这些Telegram MarkdownV2的保留字符,需要提前对name做转义处理,避免消息发送失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:15:05