我有简单的代码在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>";
}
}
发布于 2019-05-28 02:35:27
您可以将其简化为一个查询,并在PHP中检查该数字是否为偶数或奇数。使用三元运算符,它可以内联完成。使用ORDER BY MOD(id, 2), id
(首先按偶数排序,然后按升序排序),您可以获得按偶数和奇数排序的数据(请参阅live fiddle: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>";
}
}
https://stackoverflow.com/questions/56330639
复制相似问题