如果rowCount为空,请再试一次

时间:2016-04-26 13:22:32

标签: php mysql loops if-statement rowcount

我正在从表中运行查询,该表的数据每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);

?>

5 个答案:

答案 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);

这基本上是对您的请求的回答,但它需要更多解释才有用。