2014-01-18 47 views
0

我想弄清楚为什么我的mysqli查询没有返回所有的行。出于某种原因,当数据库中有4个结果时,它返回3个结果。它完全跳过了数据库中的第一条记录。这是我的查询。MYSQLI fetch_array不工作

$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

在您的while循环中调用它之前调用fetch_array。这有效地损失了你的一行。 – MrVimes

+0

那么,在'while'条件中检索结果之前调用'$ result-> fetch_array()'。这将检索第一行,这就是您遇到问题的原因。 – arkascha

+0

谢谢!你是对的。 – MagentoMan

回答

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 - 取一结果行作为关联,数值数组或两者兼有

结果行(单词:one)将在任何时候调用此函数。因此,目前您的代码类似于:

fetch one row -> do nothing with it 
while: 
    fetch one row -> display it