Php while循环中的do while语句可能是语法吗?
平台上的用户选择社交媒体服务,然后选择预算范围。我收集信息并通过ajax post发布到php。现在有了这些信息,我正试图为他创建一个随机计划,定价在他的预算之内。我在while循环中使用do-while,但它会永远加载,并且不太起作用。基本上,如果用户选择每月预算为30美元的Facebook、Twitter和YouTube,应用程序应该返回Facebook Bronze、Twitter Bronze和YouTube Bronze。然后加上15美元的预付费,显示总共30美元。我真的被困在这件事上了 Db表看起来像这样Php while循环中的do while语句可能是语法吗?,php,mysqli,do-while,Php,Mysqli,Do While,平台上的用户选择社交媒体服务,然后选择预算范围。我收集信息并通过ajax post发布到php。现在有了这些信息,我正试图为他创建一个随机计划,定价在他的预算之内。我在while循环中使用do-while,但它会永远加载,并且不太起作用。基本上,如果用户选择每月预算为30美元的Facebook、Twitter和YouTube,应用程序应该返回Facebook Bronze、Twitter Bronze和YouTube Bronze。然后加上15美元的预付费,显示总共30美元。我真的被困在这件事上
id | social | price | level
1 | Facebook | 5 | Bronze
2 | Facebook | 7 | Silver
3 | Facebook | 9 | Gold
4 | Twitter | 5 | Bronze
5 | Twitter | 7 | Silver
6 | Twitter | 9 | Gold
7 | YouTube | 5 | Bronze
8 | YouTube | 7 | Silver
9 | YouTube | 9 | Gold
...
服务器端
$monthlybudget = $_POST['monthlybudget'];
$mysocialmediachoice = $_POST['mysocialmediachoice'];
$upfront = 15;
$query = "SELECT * FROM `services` WHERE social IN ($mysocialmediachoice)";//yes I do know this is prone to injections this is just a demo for here NOT the actual code
$webstsm = $conn->prepare($query);
$webstsm->execute();
$result = $webstsm->get_result();
if ($monthlybudget =='30') {
$level ='Bronze';
}
if ($monthlybudget =='200') {
$level ='Silver';
}
if ($monthlybudget =='400') {
$level ='Gold';
}
while ($row = $result->fetch_assoc()) {
if (($row['level'] == $level)) {
$subtotal +=($row['price'] + $upfront);//sum of total of array
//var_export($row); //testing
do {
echo $row['social'];
} while ($subtotal < $monthlybudget);
}
}
$sumtotal = ($subtotal);
echo $sumtotal;//print total of recommended plan
你有一个无限循环:
do {
echo $row['social'];
} while($subtotal < $monthlybudget);
只要条件为真,就会执行此操作。由于$subtotal和$monthlybudget在循环中都没有更改,因此一旦进入循环,它将永远不会退出。问题在于do while的条件永远不会从TRUE更改为FALSE。如果条件$subtotal<$monthlybudget以TRUE开头,则循环中的指令将永远运行。在一段时间内执行do while原则上没有问题,但是do while循环将永远不会完成,因为循环中的任何内容都不会更改在while条件下测试的变量的值。@Nick:Argh。当然我现在几乎想删除这个。这可能是正确的做法。一旦你理清了这个循环的条件,就要问一个新问题。