电报Bot和Mysqli_fetch_assoc问题

时间:2020-07-20 17:51:13

标签: mysql mysqli phpmyadmin telegram telegram-bot

我正在用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']);
  }
}

1 个答案:

答案 0 :(得分:0)

您正在为查询中的每个结果发送一条消息,因为对所有行都执行了while循环。如果我理解正确,则希望发送一条包含所有查询结果的消息。我建议您使用PDO来与数据库连接和获取/插入数据,因为它是more secure

尝试一下:

<?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']);
}

相关问题