PHP页面未按预期返回图像

时间:2017-06-12 01:11:50

标签: php mysqli

试图弄清楚为什么以下代码不会带来预期的结果。当我点击我的主index.php页面上的链接时,它会打开一个details.php页面,在该页面上我有一个子页面,它也可以从我的URL获取信息,然后根据该数据显示图像。但是,仅当SQL查询中有超过1行时。

我可以运行SQL查询,如果我删除变量$ pid,$ lvmID,$ in并插入实际值,则返回结果。如果返回> = 2结果,页面将显示结果。

我的代码:

class DisplayValueOfVariable {
    public static void main(String[] args) {
        int x = 0;
        System.out.println(x);
        x++;
        System.out.println(x);
    }
}

1 个答案:

答案 0 :(得分:0)

每次调用mysqli_fetch_assoc都会从结果集中删除一行。

在关闭连接之前,您有这个电话:

$row = mysqli_fetch_assoc($result);

实际上会从查询结果中获取第一行。然后,你在这里有条件:

        while($row = mysqli_fetch_assoc($result)){ 

将从结果中获取第二行,然后执行循环内部,如果有第二行。因此,查询返回的第一行永远不会在while循环中处理。

解决方案只是删除对mysqli_fetch_assoc()的第一次调用,并保留完整代码如下:

<?php
    if (!defined('DB_SERVER')) define('DB_SERVER', 'localhost');
    if (!defined('DB_USER')) define('DB_USER', 'xxx');
    if (!defined('DB_PASSWORD')) define('DB_PASSWORD', 'xxx');
    if (!defined('DB_TABLE')) define('DB_TABLE', 'xxx');


    // The procedural way
    $mysqli = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_TABLE);
    $mysqli->set_charset("utf8");
    $mysqli->query("SET NAMES 'utf8'");
    if (mysqli_connect_errno($mysqli)) {
        trigger_error('Database connection failed: '  . mysqli_connect_error(), E_USER_ERROR);
    }

    $pid = mysqli_real_escape_string($mysqli, $_GET['pid']); 
    $lvmID = mysqli_real_escape_string($mysqli, $_GET['lvmID']); 
    $in = mysqli_real_escape_string($mysqli, $_GET['in']);

    $query = "
                SELECT r.*, lvm.luchtvaartmaatschappijID
                FROM tbl_random r

                LEFT JOIN tbl_luchtvaartmaatschappij lvm
                ON r.img_lvm = lvm.IATAcode

                WHERE r.img_nmr ='$in'
                AND lvm.luchtvaartmaatschappijID = '$lvmID'
                AND r.randimgID != '$pid'
                LIMIT 6";

    $result = mysqli_query($mysqli, $query) or trigger_error("Query Failed! SQL: 
    $query - Error: ". mysqli_error($mysqli), E_USER_ERROR);

    mysqli_close($mysqli);

    ?>

    <?php
        $items_in_row = 3 ;
        $index = 0 ;
    ?>

        <table width='100%' cellspacing='5' border='0'>
          <tr>

        <?php
        while($row = mysqli_fetch_assoc($result)){ 
          $index++ ; ?>
          <td style="text-align: center" width='375'>       

             <a href='http://globe-trekking.com/vg/home/details.php?pid=<?php echo $row['randimgID'];?>&lvmID=<?php echo $row['luchtvaartmaatschappijID'];?>&in=<?php echo $row['img_nmr'];?>'> <img src='http://globe-trekking.com/vg/img/random/<?php echo $row['img_lvm'];?>/<?php echo $row['img_file'];?>' width='345'></a> 


            <br>
          </td>
        <?php if ($index%$items_in_row == 0){ ?>
          </tr>
          <tr>
        <?php }
        } ?>
        </tr>
        </table>