试图弄清楚为什么以下代码不会带来预期的结果。当我点击我的主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);
}
}
答案 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>