0

我有两个查询,我想在单独的 while 循环中得到结果,查询工作正常,但我不知道如何在 while 循环中分离结果。

php

$query = "
SELECT 1 as query, title FROM $tablename WHERE category='category1' LIMIT 10
UNION
SELECT 2 as query, title FROM $tablename WHERE category='category2' LIMIT 10
";

$result = mysqli_query($connection, $query) or trigger_error(mysqli_error($connection), E_USER_ERROR);

while($row = mysqli_fetch_assoc($result[1])){
    echo $row['title'].'<br />';
}
while($row = mysqli_fetch_assoc($result[2])){
    echo $row['title'].'<br />';
}

请查看并建议任何可能的方法来做到这一点。

4

3 回答 3

0
$query = "
SELECT 1 as query, title FROM $tablename WHERE category='category1 LIMIT 10'
UNION
SELECT 2 as query, title FROM $tablename WHERE category='category2 LIMIT 10'
";

$result = mysqli_query($connection, $query) or trigger_error(mysqli_error($connection), E_USER_ERROR);

$qResult1 = array();
$qResult2 = array();

while($row = $result->fetch_assoc()){
    if($row['query'] == 1) $qResult1[] = $row;
    else $qResult2[] = $row;
}
于 2013-01-26T08:43:01.540 回答
0

为什么不分开两个查询?

$query1 = "SELECT title FROM $tablename WHERE category='category1' LIMIT 10";

$result = mysqli_query($connection, $query1) or trigger_error(mysqli_error($connection), E_USER_ERROR);

while($row = mysqli_fetch_assoc($result1)){
    echo $row['title'].'<br />';
}

$query2 = "SELECT title FROM $tablename WHERE category='category2' LIMIT 10";
$result = mysqli_query($connection, $query2) or trigger_error(mysqli_error($connection), E_USER_ERROR);

while($row = mysqli_fetch_assoc($result2)){
    echo $row['title'].'<br />';
}

或者您可以循环类别。

$catgories = array('category1', 'category2');

foreach($categories as $cat){
    $query = "SELECT title FROM $tablename WHERE category = {$cat} LIMIT 10";
    $result = mysqli_query($connection, $query) or trigger_error(mysqli_error($connection), E_USER_ERROR);
    echo $cat.'<br />'
    while($row = mysqli_fetch_assoc($result)){
        echo $row['title'].'<br />';
    }
于 2013-01-26T08:47:56.907 回答
0
$query = "
  SELECT 1 as query, title FROM $tablename WHERE category='category1' LIMIT 10
  UNION
  SELECT 2 as query, title FROM $tablename WHERE category='category2' LIMIT 10
";

$result = mysqli_query($connection, $query) or trigger_error(mysqli_error($connection), E_USER_ERROR);

while($row = mysqli_fetch_assoc($result)){
    echo $row['title'].'<br />';
}

而已。while 循环的每次迭代都会检索下一个结果。

于 2013-01-26T08:36:43.430 回答