我正在从表中运行查询,该表的数据每30秒刷新一次(删除并重新插入)。
我希望我的查询(输出行数)检测行计数是null
(或零)并重新运行查询。最大重试次数:5。
在第5次重试后,如果它仍为零,我希望行数打印为“0”。
我知道这是一个循环,但我不知道如何从if for row中循环它。
<?php
$con=mysqli_connect("HOST","USERNAME","PASS","TABLENAME");
$sql="SELECT id FROM candyshop WHERE candy <= 5 AND sugartype ='hard'";
$number = 0; //init count for loop
if ($result=mysqli_query($con,$sql))
{
$rowcount=mysqli_num_rows($result);
printf($rowcount); //print number of rows
mysqli_free_result($result);
$number = $number+1; //increment number for loop
}
mysqli_close($con);
?>
答案 0 :(得分:1)
仍然是StackOverflow的新手,但你能尝试一下吗?
<?php
$con=mysqli_connect("HOST","USERNAME","PASS","TABLENAME");
$sql="SELECT id FROM candyshop WHERE candy <= 5 AND sugartype ='hard'";
$number = 0; //init count for loop
if ($result=mysqli_query($con,$sql)) {
$rowcount=mysqli_num_rows($result);
printf($rowcount); //print number of rows
mysqli_free_result($result);
$number = $number+1; //increment number for loop
if ($number = 5) {
printf(0);
break 2;
}
}
mysqli_close($con);
?>
答案 1 :(得分:1)
使用do while循环,只有在rowcount高于0或已达到5次重试时才离开循环。
String(orderNo)
这是非常糟糕的做法,我建议寻找另一种方法。你为什么要清理并重新填充表格?
答案 2 :(得分:0)
$i = 0;
do {
$result = mysqli_query($con, $sql);
$count = mysqli_num_rows($result);
} while ($count == 0 && $i++ < 5)
答案 3 :(得分:0)
据我所知,你正在尝试编写基于网络的游戏。实际上你的方法可能会使数据库有点繁忙。您不必循环查询。如果你打算这样做,我们在这里谈论毫秒。假设您的查询通常在0.05秒内给出结果,这意味着对于5个查询,您将获得0.25秒的数据。
您可以使用COMET编程轻松编写游戏或其他任何内容。但是如果你决定使用循环查询,那么你只会做一件事而且它是循环的。
答案 4 :(得分:0)
$rowcount=0;
do {
if ($result=mysqli_query($con,$sql)) {
$rowcount=mysqli_num_rows($result);
printf($rowcount); //print number of rows
mysqli_free_result($result);
}
} while(++$number<5 && $rowcount!=0);
这基本上是对您的请求的回答,但它需要更多解释才有用。