Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.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 当循环只在第一次工作时在内部调用mysql过程_Php_Mysql_Loops_Stored Procedures_Procedure - Fatal编程技术网

Php 当循环只在第一次工作时在内部调用mysql过程

Php 当循环只在第一次工作时在内部调用mysql过程,php,mysql,loops,stored-procedures,procedure,Php,Mysql,Loops,Stored Procedures,Procedure,我有一些数据库的数据,我张贴在一个表上。对于表的每一行(while循环的每一个循环),我需要调用一个存储过程来计算表的最后一个的数据 下面是一些代码: $s = $lk->query("SELECT * FROM A_USERS JOIN A_DATA WHERE A_DATA.id_user = A_USERS.id AND A_USERS.

我有一些数据库的数据,我张贴在一个表上。对于表的每一行(while循环的每一个循环),我需要调用一个存储过程来计算表的最后一个
的数据

下面是一些代码:

$s = $lk->query("SELECT *
                  FROM A_USERS
                  JOIN A_DATA
                  WHERE A_DATA.id_user = A_USERS.id
                    AND A_USERS.usr_att = 1
                    AND A_DATA.act_data = 1
                    AND A_DATA.a_att = 1
                    AND A_DATA.qty IS NOT NULL
                  ORDER BY ID ASC");


while ($dato = $s->fetch_object()) {
    print '<tr>';

    print '<td>';   
    print $dato->id;
    print '</td>';

    //others cells


    $GetP = $lk->query("CALL GetPr($dato->qty, '$dato->prod')");

    if(mysqli_num_rows($GetP) === 1){
        while($p_db = mysqli_fetch_array($GetP)){
            $p = $p_db['p'];
        }

        $format = number_format(round($p, 1), 2, ',', '\'');

        //some other stuff here...

    }else{
        print '<td>';
        print 'ERROR';
        print '</td>';
    }
    print '</tr>';
}
MYSQLI错误:

Error: 2014-Commands out of sync; you can't run this command now

不确定这是否是问题所在,但mysqli\u fetch\u数组将内部指针向前推进,并将其替换为mysqli\u num\u行

while($p_db = mysqli_fetch_array($GetP)){
        $p = $p_db['p'];
    }
编辑:

将此2放在//其他单元格下


另外,ty用fetch_all替换fetch_对象。

不确定这是否是问题所在,但mysqli_fetch_数组推进了内部指针,将其替换为mysqli_num_行

while($p_db = mysqli_fetch_array($GetP)){
        $p = $p_db['p'];
    }
编辑:

将此2放在//其他单元格下


另外,ty用fetch_all替换fetch_对象。

根据@Mihai的建议,我找到了以下解决方案:

参考:

while($dato=$s->fetch_object()){
打印“”;
打印“”;
打印$dato->id;
打印“”;
//其他细胞
$GetP=$lk->query(“调用GetPr($dato->qty,$dato->prod”);
if(mysqli_num_rows($GetP)==1){
而($p_db=mysqli_fetch_数组($GetP)){
$p=$p_db['p'];
}
$format=数字\单位格式(圆形($p,1),2,',','\');
//这里还有一些其他的东西。。。
}否则{
打印“”;
打印“错误”;
打印“”;
}
//增加了两行
$GetPrice->close();
$link->next_result();
打印“”;
}

根据@Mihai的建议,我找到了以下解决方案:

参考:

while($dato=$s->fetch_object()){
打印“”;
打印“”;
打印$dato->id;
打印“”;
//其他细胞
$GetP=$lk->query(“调用GetPr($dato->qty,$dato->prod”);
if(mysqli_num_rows($GetP)==1){
而($p_db=mysqli_fetch_数组($GetP)){
$p=$p_db['p'];
}
$format=数字\单位格式(圆形($p,1),2,',','\');
//这里还有一些其他的东西。。。
}否则{
打印“”;
打印“错误”;
打印“”;
}
//增加了两行
$GetPrice->close();
$link->next_result();
打印“”;
}

该程序工作正常。如果我用每一行的数据从
PHP My Admin
调用它,它就会工作!不管怎么说,我现在就发布它,也许它不会为您的第一个查询中的任何其他行返回1行。你证实了吗?此外,无效数据可能是一个问题<代码>$dato->qty可以是
null
或者
$dato->prod
可以包含
或者是
null
。在这种情况下,对过程的调用将无效。该过程返回错误(如果我添加
或死亡(…)
调用过程后,调用过程将终止。
$dato->qty
是一个整数,不能为
NULL
$dato->prod
只有两种可能性
HEL
OECO
您能否提供有关错误的更多详细信息。是否返回了什么?错误:2014命令不同步;您无法运行is command now该过程工作正常。如果我从
PHP My Admin
调用它并使用每行的数据,它就工作了!不管怎样,我现在发布它,它可能不会为您的第一次查询中的任何其他行返回1行。您验证了吗?另外,无效数据可能是一个问题。
$dato->qty
可能是
null
$dato->prod
可能包含
或为
null
。在这种情况下,对过程的调用将无效。该过程返回错误(如果我添加
或死亡(…)
调用过程后,调用过程将终止。
$dato->qty
是一个整数,不能为
NULL
$dato->prod
只有两种可能性
HEL
OECO
您能否提供有关错误的更多详细信息。是否返回了什么?错误:2014命令不同步;您无法运行is命令now
致命错误:在第130行的/test.php中调用未定义的方法stdClass::close()
这是现在的代码:
打印“”;$dato->close();$s->next_result();$GetP=$lk->query(“调用GetPr($dato->数量,$dato->prod”);
警告:mysqli_result::fetch对象()[mysqli result.fetch object]:无法在第94行的/../test.php中获取mysqli_结果。这是第94行:
而($dato=$s->fetch_object()){
这是正常的,因为我们关闭了创建的dataOk解决方案!我发布了一个答案
致命错误:调用未定义的方法stdClass::close()在第130行的/../test.php中
这是现在的代码:
打印“;$dato->close();$s->next_result();$GetP=$lk->query(“调用GetPr($dato->qty,$dato->prod”);
警告:mysqli_result::fetch_object()[mysqli result.fetch object]:无法在第94行的/../test.php中获取mysqli_结果。这是第94行:
($dato=$s->fetch_object()){
这是正常的,因为我们关闭了创建的dataOk解决方案!我发布了一个答案
$s->close();

$lk->next_result();
while ($dato = $s->fetch_object()) {
    print '<tr>';

    print '<td>';   
    print $dato->id;
    print '</td>';

    //others cells


    $GetP = $lk->query("CALL GetPr($dato->qty, '$dato->prod')");

    if(mysqli_num_rows($GetP) === 1){
        while($p_db = mysqli_fetch_array($GetP)){
            $p = $p_db['p'];
        }

        $format = number_format(round($p, 1), 2, ',', '\'');

        //some other stuff here...

    }else{
        print '<td>';
        print 'ERROR';
        print '</td>';
    }

    //Added this 2 lines
    $GetPrice->close();
    $link->next_result();

    print '</tr>';
}