我试图找出为什么我的mysqli查询没有返回所有行。由于某种原因,当数据库中有4个时,它会返回3个结果。它完全跳过了数据库中的第一条记录。这是我的询问。
$results = "SELECT * FROM `results` LIMIT 10";
$result = $conn->query($results);
if ($result) {
?>
<div id="tableResults">
<div class="row1 bg">Predicted Sex</div>
<div class="row2 bg">Suggested Baby Boy Name</div>
<div class="row3 bg">Suggested Baby Girl Name</div>
<div class="breaker"></div>
<?php
/* fetch object array */
$i = 0;
$count = count($result->fetch_array());
while ($row = $result->fetch_array()) {
?>
<div class="row1 <?php if (!$i == $count - 1) { echo 'customborder'; } ?>"><?php echo $row['sex']; ?></div>
<div class="row2 <?php if (!$i == $count - 1) { echo 'customborder'; } ?>"><?php echo $row['boy_name']; ?></div>
<div class="row3 <?php if (!$i == $count - 1) { echo 'customborder'; } ?>"><?php echo $row['girl_name']; ?></div>
<?php
$i++;
}
}
$conn->close();
?>
答案 0 :(得分:1)
正如评论$count = count($result->fetch_array());
中所述,这将无法按预期工作,并使您丢失一行(因为它已被提取)。相反,您可以使用num_rows
,如下所示
$count = $result->num_rows;
while ($row= $result->fetch_array()) {
//...
}
详细说明,当您阅读fetch_array()
上的手册时,您会找到此部分
mysqli_result::fetch_array
-mysqli_fetch_array
- 将结果行提取为关联行,数字数组或两者
每次调用此函数时,都会获取结果行(单词:一个)。所以目前你的代码类似于:
fetch one row -> do nothing with it
while:
fetch one row -> display it