MYSQLI fetch_array无效

时间:2014-01-18 13:16:40

标签: php mysqli

我试图找出为什么我的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();
?>

1 个答案:

答案 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