0

2つのクエリで別々の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);

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

それでおしまい。whileループを繰り返すたびに、次の結果が取得されます。

于 2013-01-26T08:36:43.430 に答える
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

2つのクエリを分離してみませんか?

$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 に答える