Telegram Bot 和 Mysqli_fetch_assoc 问题

我正在用 PHP 制作一个 Telegram 机器人。我已经连接了一个 Mysql 数据库,并且需要在唯一的消息中打印一些结果。但是当我启动命令时,它会在一些消息中打印每个结果。如何在一条独特的消息中打印所有结果?


这是代码:


if($data == 'rawliberi'){

  $thequery = "SELECT * FROM uwgliberi WHERE roster='OCW'";

  $thequeryup = mysqli_query($conn, $thequery);

  while($row = mysqli_fetch_assoc($thequeryup)){

       $Alex -> Request('sendMessage', ['chat_id' => $chat_id, 'text' => $row['wrestlername'], 'parse_mode' => 'HTML']);

  }

}


MM们
浏览 97回答 1
1回答

慕码人2483693

您正在为查询中的每个结果发送一条消息,因为 while 循环是针对所有行执行的。如果我理解正确的话,您想发送一条包含所有查询结果的消息。我建议您使用PDO连接数据库并从数据库获取数据/向数据库插入数据,因为这样更安全。尝试这个:<?php$pdo = new PDO("mysql:host=localhost;dbname=DATABASE_NAME", "USERNAME", "PASSWORD");if($data == 'rawliberi'){  $allResults = "";  $stmt = $pdo->prepare("SELECT * FROM uwgliberi WHERE roster=:roster"); // Prepare the query  $stmt->execute(['roster' => "OCW"]); // Replace parameters starting with ":" with the given value (e.g. replace ":roster" with "OCW") and execute the query  $results = $stmt->fetchAll(\PDO::FETCH_ASSOC); // Insert results in the $results variable/*Result's value example[  {    "id": "1",    "wrestlername": "Nicola",    "roster": "OCW"  },  {    "id": "2",    "wrestlername": "Mauro",    "roster": "OCW"  },  {    "id": "3",    "wrestlername": "Don Gino",    "roster": "OCW"  }]*/  for ($i = 0; $i < count($results); $i++){ // Execute this loop for each result in $results. The count() function return the count of the results    $allResults .= $results[$i]['wrestlername'] . "\n"; // Add the wrestlername to the allResults variable and go to a new line (\n) so the names won't be "NicolaMauroDon Gino"  }  $Alex->Request('sendMessage', ['chat_id' => $chat_id, 'text' => $allResults, 'parse_mode' => 'HTML']);}
打开App,查看更多内容
随时随地看视频慕课网APP