Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP While循环更新在第一行停止_Php - Fatal编程技术网

PHP While循环更新在第一行停止

PHP While循环更新在第一行停止,php,Php,我做了一个while循环,它将告诉您事务历史中是否有项目,并在事务结束时将其放回库存中,但问题是。它获取一个名为 未捕获错误:在中的bool上调用成员函数fetch_assoc() 所以我一个接一个地尝试了这个查询,结果成功了 我尝试对另一个查询进行实验和注释,并添加了一个计数器++;来判断循环是否有效。我发现的问题是,在第一个if-else之后,计数器只加1,好像我只尝试这个,它循环4,这是正确的 查询我试图检查循环的数量 $counter=0; $sql="SELECT * FRO

我做了一个while循环,它将告诉您事务历史中是否有项目,并在事务结束时将其放回库存中,但问题是。它获取一个名为

未捕获错误:在中的bool上调用成员函数fetch_assoc()

所以我一个接一个地尝试了这个查询,结果成功了

我尝试对另一个查询进行实验和注释,并添加了一个计数器++;来判断循环是否有效。我发现的问题是,在第一个if-else之后,计数器只加1,好像我只尝试这个,它循环4,这是正确的

查询我试图检查循环的数量

$counter=0;
$sql="SELECT * FROM brb_backtransaction WHERE trans_uk='$curr_trans' ";
if($rs=$con->query($sql)){
    while ($row=$rs->fetch_assoc()){
    $counter++
}
}
它回显1234,所以它是正确的,但当第一次出现if else时,它只回显1

$counter =0;
$sql="SELECT * FROM brb_backtransaction WHERE trans_uk='$curr_trans' ";
if($rs=$con->query($sql)){
    while ($row=$rs->fetch_assoc()){
        $item = $row['trans_item'];
        $quan = $row['trans_quantity'];

        
    
        $sqlsitem="SELECT itmQuantity FROM brb_inventory WHERE itmName='$item'";
        if($rs=$con->query($sqlsitem)){
            $quanrow = $rs->fetch_assoc();
            $currquan = $quanrow['itmQuantity'];

            $counter++;
        }

我删除了其他查询,因为我认为这是问题所在。我在while循环中总共运行了3个查询。

要使while循环正常工作,它需要访问存储在
$rs
变量中的原始数据流

但是,在代码的下面,您将用一个全新的数据流替换
$rs
变量的内容。因此,while循环不再能够访问原始数据流,因为它基本上是丢弃的

要解决此问题,请将第二个实例更改为另一个变量名,如
$rs2
。这样,对于两个不同的数据流,就有了两个完全不同的变量

话虽如此,您的代码也容易受到注入攻击。我建议调查PDO并准备好声明


另外,使用SQL联接时切向垂直是正确的

您似乎正在用一个全新的查询覆盖
$rs
变量的值。这是不允许的吗?我已经在我的另一个网页上尝试过了,如果你不需要回到上一个网页,它是可以被允许的。但是,在您的情况下,while循环希望找到上一个查询,而该查询现在已被丢弃。我将尝试对每个被调用的query逐个更改$rs变量。您不应该使用PHP循环记录集以执行更多查询。您应该构造查询,以便在一个查询中返回所需的所有数据。看看SQL连接