MySQL,PHP:从最小到最大的回显ID

时间:2019-05-27 18:05:33

标签: php mysql

我在PHP中有简单的代码,实际代码会从MySQL表中抛出所有带有偶数ID的项,并在其下抛出带有奇数ID的所有项。

我需要将所有具有内容的ID依次从最小到最大列出。

if( $db-> connect_error ) {
    die( "Not connected" . $db-> connect_error );
}

$sqlEven = "SELECT * FROM documents WHERE MOD (id,2)=0";
$resultEven = $db-> query($sqlEven);

if( $resultEven-> num_rows ) {
    while( $rowEven = $resultEven-> fetch_assoc() ) {
        echo $rowEven["id"] . "<li class=\"dark\"><a href=\"" . $rowEven["url"] . "\">" . $rowEven["name"] . "</a></li>";
    }
}

if( $db-> connect_error ) {
    die( "Not connected" . $db-> connect_error );
}

$sqlOdd = "SELECT * FROM documents WHERE MOD (id,2)<>0";
$resultOdd = $db-> query($sqlOdd);

if( $resultOdd-> num_rows ) {
    while( $rowOdd = $resultOdd-> fetch_assoc() ) {
        echo $rowOdd["id"] . "<li class=\"light\"><a href=\"" . $rowOdd["url"] . "\">" . $rowOdd["name"] . "</a></li>";
    }
}

1 个答案:

答案 0 :(得分:0)

您可以将此查询简化为一个查询,并检查PHP中的数字是偶数还是奇数。使用三元运算符,可以内联完成。使用ORDER BY MOD(id, 2), id(先按偶数,然后按升序排序),即可得到按偶数和奇数排序的数据(请参见实时提琴:http://sqlfiddle.com/#!9/af25e5/2)。

这样,您只需要一个查询和一个循环。

if ($db->connect_error) {
    die("Not connected: " . $db->connect_error);
}

$sql = "SELECT * FROM documents ORDER BY MOD(id, 2), id";
$result = $db->query($sql);

if ($result->num_rows) {
    while ($row = $result->fetch_assoc()) {
        echo $row["id"] . '<li class="'.($row['id'] % 2 == 0 ? 'dark' : 'light').'"><a href="'.$row["url"].'">'.$row["name"]."</a></li>";
    }
}