Query MySQL с while и другим query внутри

Я выдвигаю здесь nua вопрос, который я консультировал в других сайтах, и никто не сумел отвечать мне. Я начинающий в PHP и MySQL, и делаю мои pinitos. Я заканчиваюсь находить с достаточно частым случаем, который является случаем query, который приносит while, внутри которого есть другой query. Если у них есть SQL внутри PHP совсем хорошо; но как только я помещаю querys в процедуры, хранившиеся в базе данных, вторая прекращает функционировать.

Очень простой пример, который может быть проверенным:

// PRIMERA QUERY
$result_1 = $connection->query("SELECT * FROM user");
if($result_1){
    while ($row_1 = $result_1->fetch_object()){
        $id_1 = $row_1->id;
        echo "<b>id_1: ".$id_1."</b><br />";
        // SEGUNDA QUERY
        $result_2 = $connection->query("SELECT * FROM user");
        if($result_2){
            while ($row_2 = $result_2->fetch_object()){
                $id_2 = $row_2->id;
                echo "id_2: ".$id_2."<br />";
            }
            $result_2->close();
            $connection->next_result();
        }
    }
    $result_1->close();
    $connection->next_result();
}

Так функционируй в совершенство, и результат этот:

id_1: 1
id_2: 1
id_2: 2
id_2: 3
id_2: 4
id_2: 5
id_1: 2
id_2: 1
id_2: 2
id_2: 3
id_2: 4
id_2: 5
id_1: 3
id_2: 1
id_2: 2
id_2: 3
id_2: 4
id_2: 5
etc.

Сейчас я верю в процедуру в базе данных:

CREATE PROCEDURE test_procedure()
BEGIN
SELECT * from user;
END

И тогда давайте говорить, что я оставляю первый query с SQL и вторую с призывом к процедуре:

$result_1 = $connection->query("SELECT * FROM user");
[…]
$result_2 = $connection->query("CALL x_test()");
[…]

Также функционируй в совершенство, тот же результат.

Peeeero, если я помещаю первый query с призывом к процедуре и вторую с SQL внутри:

$result_1 = $connection->query("CALL x_test()");
[…]
$result_2 = $connection->query("SELECT * FROM user");
[…]

Или если я помещаю две querys с призывами к процедурам:

$result_1 = $connection->query("CALL x_test()");
[…]
$result_2 = $connection->query("CALL x_test()");
[…]

Тогда второй query не удается и результат - следующий:

id_1: 1
id_1: 2
id_1: 3
etc.

Вкратце: каждый раз, когда у первого query был SQL внутри, все добро; но если ты помещаешь ему призыв к процедуре, второй query будет не удаваться.

Он мне кажется таким простым и основным, что я не понимаю, как он может не удаваться. У кого-то какая-то идея есть?

5
задан 15.06.2017, 16:11
1 ответ

Не, если считается soluciГіn говорить тебе, что то, что ты просишь, не может делаться. Я буду доказывать это тебе: Я приношу некоторые aГ±os (+5) в этот мир и никогда не мог осуществлять это.

В PHP мы используем объект, который ссылается на MySql, я обычно называю его $link.

Ну вот, если мы делаем один var_dump из $link, мы видим нынешнее состояние базы данных, он говорит тебе querys в минуту, ты происходишь, и т.д....

, Итак, если мы это делаем, когда мы называем procedure тем, что мы увидим, - ошибка. Эта ошибка заканчивает тем, что говорит нам, что не estГЎ синхронизировавшая база данных и не может быть использованным.

PruГ©balo сами ты и это verГЎs.

Это происходит, из-за которого procedure состоит mГЎs медленный в том, что insert или update и цикл продолжает прокручивать изображение в окне, хотя procedure не в законченный.

Для того, чтобы он остался ясным, что я говорю, состоит в том, что в цикле procedures остаются разоренными.

Подобно заплате я сделал sleep, но это заплата.

Надеялся, что это подает тебя, и помог тебе продолжать продвигаться.

Приветствие.

0
ответ дан 24.11.2019, 08:19