我目前有这个PHP代码。

if (isset($User)){
            if (is_object($User)) {
                if (!$result_paycon = $mysqli->query("CALL CHECK_CONVENTION(" . $User->id . "," . $row_convention["IDCONVENTION"] . ")")){
                    printf("Database error");
                    exit; 
                }

                if (!$result_block = $mysqli->query("SELECT * FROM VIEW_ROOMBLOCK WHERE IDCONVENTION = " . $row_convention["IDCONVENTION"])){
                    var_dump($result_block);
                    printf("Database error");
                    exit;
                }
            }
        }

不管我做什么,$ result块的var dump始终是bool(false)。 然后,当我需要在其上使用fetch_array时,它只是告诉我$ result_block是非对象。 但是,将我的第一个查询从过程调用更改为常规选择似乎可以解决此问题,因此也可以将其完全从代码中删除。

我对两个调用都回显了SQL查询,如果我直接将它们插入SQL,它们都将返回一些内容。

我有什么不做的吗?

编辑1:仍然没有运气。 但是,如果我这样反转代码:

if (!$result_block = $mysqli->query("SELECT * FROM VIEW_ROOMBLOCK WHERE IDCONVENTION = " . $row_convention["IDCONVENTION"])){
                    printf("Database error");
                    exit;
                }

                if (!$result_paycon = $mysqli->query("CALL CHECK_CONVENTION(" . $User->id . "," . $row_convention["IDCONVENTION"] . ")")){
                    printf("Database error");
                    exit; 
                }

                var_dump($result_block);
                echo "<br />";
                var_dump($result_paycon);

我从var转储中获得以下内容:

object(mysqli_result)#4 (5) { ["current_field"]=> int(0) ["field_count"]=> int(10) ["lengths"]=> NULL ["num_rows"]=> int(2) ["type"]=> int(0) }
object(mysqli_result)#5 (5) { ["current_field"]=> int(0) ["field_count"]=> int(2) ["lengths"]=> NULL ["num_rows"]=> int(1) ["type"]=> int(0) } 

但是对于以前的代码,其中之一只是失败了,我仍然不知道为什么。

编辑2:我只是在以前的代码中打印了mysqli对象的error属性的值。 我得到以下内容:

命令不同步; 您现在不能运行此命令

===============>>#1 票数:0 已采纳

找出问题所在。 我需要运行next_result()方法为另一个查询/结果集准备$ mysqli对象。 正如前面在mysql文档的注释中所暗示的,free_result应该可以工作。 但是出于某种原因,它不适合我。

所以这有效:

if (isset($User)){
            if (is_object($User)) {
                if (!$result_paycon = $mysqli->query("CALL CHECK_CONVENTION(" . $User->id . "," . $row_convention["IDCONVENTION"] . ")")){
                    printf("Database error");
                    exit; 
                }
                $result_paycon->close();
                $mysqli->next_result();

                if (!$result_block = $mysqli->query("SELECT * FROM VIEW_ROOMBLOCK WHERE IDCONVENTION = " . $row_convention["IDCONVENTION"])){
                    var_dump($result_block);
                    printf("Database error");
                    exit;
                }
            }
        }

  ask by Sefam translate from so

未解决问题?本站智能推荐: