我有一个代码可以从mysql数据库中获取列表,并将结果发送给电报bot中的用户。该代码没有任何问题-但它会为每个结果发送一条消息。多数民众赞成在问题,它淹没了服务器。我试图更改代码以在一条消息文本中发送所有结果,但它仅发送最后一个结果。 主要代码(不变):
$sql92 = "SELECT name, price, link FROM packages";
$result92 = mysqli_query($conn, $sql92);
if (mysqli_num_rows($result92) > 0) {
foreach($result92 as $row) {
$packname = $row["name"];
$packprice = $row["price"];
$packlink = $row["link"];
$amount = $packprice/100;
$amount = $amount*80;
$packtext = "
$lang_packname => $packname
$lang_packprice => $amount $lang_sambol
$lang_packdesc => $packlink";
var_dump(makereq('sendMessage',[
'chat_id'=>$update->message->chat->id,
'text'=>"$packtext ",
'parse_mode'=>'MarkDown',
'reply_markup'=>json_encode([
'keyboard'=>[
[
['text'=>"$lang_back"]
]
],
'resize_keyboard'=>true
])
]));
}
}
答案 0 :(得分:0)
@waterloomatt的答案
工作正常!
您需要在循环内连接消息字符串。目前,您每次都覆盖它。简单地说,只需输入一个即可。 (点)直接位于=之前。例如... $ packtext。=。但是,这只会将多个字符串粘合在一起,因此消息的格式可能是错误的,但是您应该能够取得进展。
$sql92 = "SELECT name, price, link FROM packages";
$result92 = mysqli_query($conn, $sql92);
if (mysqli_num_rows($result92) > 0) {
foreach($result92 as $row) {
$packname = $row["name"];
$packprice = $row["price"];
$packlink = $row["link"];
$amount = $packprice/100;
$amount = $amount*80;
$packtext .= "
$lang_packname => $packname
$lang_packprice => $amount $lang_sambol
$lang_packdesc => $packlink";
}
var_dump(makereq('sendMessage',[
'chat_id'=>$update->message->chat->id,
'text'=>"$packtext ",
'parse_mode'=>'MarkDown',
'reply_markup'=>json_encode([
'keyboard'=>[
[
['text'=>"$lang_back"]
]
],
'resize_keyboard'=>true
])
]));
}