PHP&;MySQL:While循环

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 (

首先,我对PHP和MySQL还很陌生,所以我还是先编写代码

我正在开发一个应用程序,它接受交易,并在某个到期日向以前捐款的用户支付到期金额。我有一个解决背包问题的方法(数据库中的一组交易金额加起来等于到期日到期的用户的到期金额)。目前,我的演示数据库如下所示:


如果我的当前日期(现在)=
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'];

                        }
                    }
                }