【问题标题】: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 />";
}