PHP&;MySQL:While循环
首先,我对PHP和MySQL还很陌生,所以我还是先编写代码 我正在开发一个应用程序,它接受交易,并在某个到期日向以前捐款的用户支付到期金额。我有一个解决背包问题的方法(数据库中的一组交易金额加起来等于到期日到期的用户的到期金额)。目前,我的演示数据库如下所示:PHP&;MySQL:While循环,php,mysql,loops,datetime,while-loop,Php,Mysql,Loops,Datetime,While Loop,首先,我对PHP和MySQL还很陌生,所以我还是先编写代码 我正在开发一个应用程序,它接受交易,并在某个到期日向以前捐款的用户支付到期金额。我有一个解决背包问题的方法(数据库中的一组交易金额加起来等于到期日到期的用户的到期金额)。目前,我的演示数据库如下所示: 如果我的当前日期(现在)=2017-04-03 11:36:03=CAST(现在()为DATETIME),我的应用程序将循环遍历数据库,从tran\u date(即,其中到期日您的问题是,您调用的变量是相同的 如果你看: while (
如果我的当前日期(现在)=
2017-04-03 11:36:03
=CAST(现在()为DATETIME)
,我的应用程序将循环遍历数据库,从tran\u date
(即,其中到期日您的问题是,您调用的变量是相同的
如果你看:
while ($row = mysqli_fetch_assoc($queryRun)) //Internal loop
在这个循环中,你有另一个循环
//check if data was pulled
if (mysqli_num_rows($SECOND_queryRun) != NULL) {
//grab data from array and insert it into an array
while ($SECOND_row = mysqli_fetch_assoc($SECOND_queryRun)) {
//Populate Arrays to be used
$tran_amt[] = $SECOND_row['tran_amt'];
$tran_inv[] = $SECOND_row['tran_inv'];
$user_id[] = $SECOND_row['user_id'];
}
}
}
因此,用于内部循环的外部循环内的变量实际上覆盖了外部循环变量,因此,当外部循环第二次运行时,代码认为它已经完成了,因为它引用了内部循环变量
要解决此问题,必须重命名用于内部循环的变量您的问题是调用的变量是相同的
如果你看:
while ($row = mysqli_fetch_assoc($queryRun)) //Internal loop
在这个循环中,你有另一个循环
//check if data was pulled
if (mysqli_num_rows($SECOND_queryRun) != NULL) {
//grab data from array and insert it into an array
while ($SECOND_row = mysqli_fetch_assoc($SECOND_queryRun)) {
//Populate Arrays to be used
$tran_amt[] = $SECOND_row['tran_amt'];
$tran_inv[] = $SECOND_row['tran_inv'];
$user_id[] = $SECOND_row['user_id'];
}
}
}
因此,用于内部循环的外部循环内的变量实际上覆盖了外部循环变量,因此,当外部循环第二次运行时,代码认为它已经完成了,因为它引用了内部循环变量
要解决此问题,必须重命名内部循环使用的变量,queryRun和row都要重命名
试试这个:
if($SECOND\u queryRun=mysqli\u query($connect,$fetchQuery)){
请注意,对于queryRun和row,都是SECOND_uu
试试这个:
if($SECOND\u queryRun=mysqli\u query($connect,$fetchQuery)){
这是不是while($row=mysqli\u fetch\u assoc($queryRun)){
循环两次?@hungrykoala,第一个while循环while($row=mysqli\u fetch\u assoc($queryRun))
根据sql查询$sql
找到到期日的用户。一旦找到用户,[user\u id]=>9
和[到期付款]=>150
和[用户id]=>2
和[到期付款]=>150
。在找到这些用户时,我运行了另一个sql查询,检查满足$fetchQuery
sql的其他用户,然后…我使用在配对算法knapSolveFast2
中找到的用户数组。因此,为了回答您的问题,查询会为找到的每个用户运行一个查询($row=mysqli\u fetch\u assoc($queryRun)){
循环两次?@hungrykoala,第一个while循环while($row=mysqli\u fetch\u assoc($queryRun))
根据sql查询$sql
找到到期日的用户。一旦找到用户[user\u id]=>9
和[due\u payment]=>150
[user\id]=>2和[due\u payment]=>150
。找到这些用户后,我运行了另一个sql查询,检查满足$fetchQuery
sql的其他用户,然后…我使用了在配对算法knapSolveFast2
中找到的用户数组。因此,为了回答您的问题,查询会为找到的每个用户运行一个sql查询
while ($row = mysqli_fetch_assoc($queryRun)) //Internal loop
//check if data was pulled
if (mysqli_num_rows($SECOND_queryRun) != NULL) {
//grab data from array and insert it into an array
while ($SECOND_row = mysqli_fetch_assoc($SECOND_queryRun)) {
//Populate Arrays to be used
$tran_amt[] = $SECOND_row['tran_amt'];
$tran_inv[] = $SECOND_row['tran_inv'];
$user_id[] = $SECOND_row['user_id'];
}
}
}