我在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>";
}
}
答案 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>";
}
}