MySQL查询显然返回了额外的行

时间:2016-11-08 14:54:03

标签: php mysql

在通过PHP从MySQL检索数据时,它会检索一个不存在于数据库中的额外行。为什么呢?

<?php

$con = mysqli_connect('host', 'username', 'password', 'database');
$sql = $con->query("SELECT * FROM info");

while($row = $sql->fetch_array()) {
    $image = $row['image_path'];
    $caption = $row['caption'];
    $id = $row['id'];
    ?>
    <div class="col-md-4">
        <div class="thumbnail">
            <img src=<?php echo $image;?>>
            <div class="caption text-center"><h3><?php echo $caption;?></h3></div>
            <button class="btn btn-default" onclick="modal(<?php  echo $id;?>)">View</button>
        </div>
    </div><!-- Column END -->
    <?php
    }
?>

1 个答案:

答案 0 :(得分:2)

因为你正在使用

$row = $sql->fetch_array();

默认为

$row = $sql->fetch_array(MYSQLI_BOTH);

并在结果集的末尾返回NULL值,因为MYSQLI_ROW

中包含MYSQLI_BOTH参数

你可以这样做来解决它:

while ($row = $sql->fetch_array(MYSQLI_ASSOC)) {