Выберите Запрос не работает второй раз на той же странице - PullRequest
0 голосов
/ 06 декабря 2018

Выбрать запрос не работает второй раз на той же странице ...

my_page.php

require_once 'self_class.php';
$user = new USER();

$under_id = "0";
$get_categories_main = $user->runQuery('SELECT * FROM category WHERE Under LIKE :under ORDER BY Id ASC ');
$get_categories_main->bindParam(':under',$under_id);
$get_categories_main->execute();

if(isset($_GET['both'])){
    echo "Both";
    while($fetch_category_main=$get_categories_main->fetch(PDO::FETCH_ASSOC))
    {
        echo $fetch_category_main['Id'].") ".$fetch_category_main['Name']."<br />";
    }
}

echo "Main";
while($fetch_category_main=$get_categories_main->fetch(PDO::FETCH_ASSOC))
{
    echo $fetch_category_main['Id'].") ".$fetch_category_main['Name']."<br />";
}

КогдаЯ посещаю my_page.php результат страницы:

Main

Id) Имя

Id) Имя

Id) Имя

Id) Имя

Id) Имя

........

Отлично!результаты, как и ожидалось ...


Когда я посещаю my_page.php? Оба результат страницы:

Оба

Id) Имя

Id) Имя

Id) Имя

Id) Имя

Id) Имя

........

OOOPS!результаты не соответствуют ожиданиям ...

Ожидаемый результат:

Оба

Id) Имя

Id) Имя

Id) Имя

Id) Имя

Id) Имя

........

Основной

Идентификатор) Имя

Идентификатор) Имя

Идентификатор) Имя

Идентификатор) Имя

Идентификатор) Имя

........

Выбрать запрос не работает второй раз на той же странице ...

1 Ответ

0 голосов
/ 06 декабря 2018

Нельзя использовать Пока более одного раза в запросе.Чтобы решить вашу проблему, правильно использовать While только один раз и создать массив , а затем вызвать его в foreach .

    require_once 'self_class.php';
    $user = new USER();

    $under_id = "0";
    $get_categories_main = $user->runQuery('SELECT * FROM category WHERE Under LIKE :under ORDER BY Id ASC ');
    $get_categories_main->bindParam(':under',$under_id);
    $get_categories_main->execute();

    while ($fetch_category_main = $get_categories_main->fetch(PDO::FETCH_ASSOC)) {
        $category[] = $fetch_category_main;
    }

    if(isset($_GET['both'])){
        echo "Both";
        foreach ($category as $key => $value) {
            echo $value['Id'].") ".$value['Name']."<br />";
        }
    }

    echo "Main";
    foreach ($category as $key => $value) {
        echo $value['Id'].") ".$value['Name']."<br />";
    }

Вы также можете использовать For , как показано ниже;

require_once 'self_class.php';
$user = new USER();

$under_id = "0";
$get_categories_main = $user->runQuery('SELECT * FROM category WHERE Under LIKE :under ORDER BY Id ASC ');
$get_categories_main->bindParam(':under',$under_id);
$get_categories_main->execute();
$len =$get_categories_main->rowCount();

while ($fetch_category_main = $get_categories_main->fetch(PDO::FETCH_ASSOC)) {
$category[] = $fetch_category_main;
}

if(isset($_GET['both'])){
echo "Both";
    for($x = 0; $x < $len; $x++) {
        echo $row = $category[$x]['Id'].") ".$category[$x]['Name']."<br />"; 
    }
}

echo "Main";
for($x = 0; $x < $len; $x++) {
    echo $row = $category[$x]['Id'].") ".$category[$x]['Name']."<br />"; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...