这是我的代码:
<?php
global $liID, $liClass;
$liV = "SELECT * FROM css";
$li1 = mysqli_query($connect,$liV);
$li = mysqli_fetch_array($li1);
$liID = $li['liID'];
$liClass = $li['liClass'];
$post = "SELECT * FROM post ORDER BY id DESC LIMIT 5";
$post1 = mysqli_query($connect,$post);
$postV = mysqli_fetch_array($post1);
do {
printf("<a href='view.php?id=%s'><li id='%s' class='%s'><img src='%s'><div class='tip'><h5>%s</h5></div></li></a>",$postV['id'],$li['liID'],$li['liClass'],$postV['slimg'],$postV['title']);
}
while ($postV = mysqli_fetch_array($post1) && $li = mysqli_fetch_array($li1));
?>
结果是,我只有“css”的数据完全符合我的需要, 但是从“帖子”我只有一个数据。
答案 0 :(得分:0)
你的逻辑非常糟糕。您的while()
条件 NOT 执行您期望的操作,并且正在被解析/执行
while($postV = (fetch($post1) && ($li = fetch($li1)))) {
注意括号的位置。 $postV
获取两次提取调用的布尔值&&
的结果。只要两者都返回非假值,$ postV就会变成布尔值TRUE
。例如它相当于:
$x = 'foo';
$y = 'bar';
$p = $x && $q = $y;
var_dump($p);
这将输出一个布尔值true,而不是foo
,因为你期待它。
请改为尝试:
while (($postV = mysqli_fetch_array($post1)) && ($li = mysqli_fetch_array($li1)));
^-----------------------------------^ ^------------------------------^
注意指示的额外括号。