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
相关产品推荐
相关产品推荐

