Php 如果rowCount为空,请重试
我正在从一个表运行一个查询,该表的数据每30秒刷新一次(删除并重新插入) 我希望我的查询(输出行计数)检测到行计数为Php 如果rowCount为空,请重试,php,mysql,loops,if-statement,rowcount,Php,Mysql,Loops,If Statement,Rowcount,我正在从一个表运行一个查询,该表的数据每30秒刷新一次(删除并重新插入) 我希望我的查询(输出行计数)检测到行计数为null(或零)并重新运行查询。最大重试次数:5次 第五次重试后,如果仍然为零,我希望行计数打印“0” 我知道这是一个循环,但我不知道如何从if for行中循环它 <?php $con=mysqli_connect("HOST","USERNAME","PASS","TABLENAME"); $sql="SELECT id FROM candyshop WHERE ca
null
(或零)并重新运行查询。最大重试次数:5次
第五次重试后,如果仍然为零,我希望行计数打印“0”
我知道这是一个循环,但我不知道如何从if for行中循环它
<?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);
?>
仍然是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);
?>
使用do while循环,仅当行数大于0或已重试5次时才离开循环
<?php
$sql = "SELECT id FROM candyshop WHERE candy <= 5 AND sugartype ='hard'";
$count = 0;
$retry = 5;
do {
// Count the rows
if ($result = mysqli_query($con, $sql)) {
$count = mysqli_num_rows($result);
}
// Wait for 10ms
if ($count === 0) {
usleep(10000)
}
} while ($count === 0 && --$retry > 0);
mysqli_close($con);
$i=0;
做{
$result=mysqli\u查询($con,$sql);
$count=mysqli\u num\u行($result);
}而($count==0&$i++<5)
据我所知,您正在尝试编写基于Web的游戏。实际上,您的方法可能会使数据库有点忙。您不必循环查询。如果你要这么做,我们这里说的是毫秒。假设您的查询通常在0.05秒内给出结果,这意味着对于5个查询,您将得到0.25秒的数据
使用COMET编程,您可以轻松编写游戏或任何东西。但若您决定使用循环查询,那个么只有一件事您要做,那就是for-loop $rowcount=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);
做{
if($result=mysqli_查询($con,$sql)){
$rowcount=mysqli\u num\u行($result);
printf($rowcount);//打印行数
mysqli_免费_结果($result);
}
}当(++$numbert您想要的是ajax,请参阅此处的文档。如果您连续5次启动查询,则值不太可能更改。您能解释一下为什么您认为这是必要的吗?。更好的解决方案是在删除和插入数据时使用事务。那么表永远不会为空。为什么在$re之前有两个破折号try?Ref.-$retry>0);关于:while($count==0&&$retry<6)呢;破折号将$retry
的值减少1,然后检查条件。我尝试了它-如果表为空,则没有输出。我的代码段没有输出任何内容,这是您必须添加的内容。但是如果找到任何行,它们将位于此代码之后的变量$result
。
$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);