【问题标题】:Select Query Not working second time on the same page选择查询在同一页面上第二次不起作用
【发布时间】:2019-05-08 00:27:42
【问题描述】:

选择查询在同一页面上第二次不起作用...

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 页面的结果是:

主要

ID) 名称

ID) 名称

ID) 名称

ID) 名称

ID) 名称

........

太棒了!结果符合预期...


当我访问 my_page.php?both 页面的结果是:

两者

ID) 名称

ID) 名称

ID) 名称

ID) 名称

ID) 名称

........

哎呀!结果并不如预期...

预期结果是:

两者

ID) 名称

ID) 名称

ID) 名称

ID) 名称

ID) 名称

........

主要

ID) 名称

ID) 名称

ID) 名称

ID) 名称

ID) 名称

........

选择查询在同一页面上第二次不起作用...

【问题讨论】:

标签: php mysql select mysqli pdo


【解决方案1】:

您不能在查询中多次使用While。为了解决您的问题,正确的方法是只使用一次 While 并创建一个 array,然后在 foreach 中调用它。 p>

    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 />"; 
}

【讨论】:

    猜你喜欢
    • 2017-05-21
    • 2019-10-05
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 2016-04-10
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多