选择了2个表,但全部从1输出,仅从第二个表(php mysql)输出1
这是我的密码:选择了2个表,但全部从1输出,仅从第二个表(php mysql)输出1,php,mysql,Php,Mysql,这是我的密码: <?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 =
<?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”中获得了我所需要的数据,
但从“post”中,我只有一个数据。你的逻辑结构非常糟糕。您的
while()
条件是没有做您期望的事情,并且被解析/执行为
while($postV = (fetch($post1) && ($li = fetch($li1)))) {
注意支架的位置$postV
正在获取两个fetch调用的布尔值&
的结果。只要两者都返回非假值,$postV就会变成布尔值TRUE
。e、 g.它相当于:
$x = 'foo';
$y = 'bar';
$p = $x && $q = $y;
var_dump($p);
这将输出布尔值true,而不是您所期望的foo
请尝试以下方法:
while (($postV = mysqli_fetch_array($post1)) && ($li = mysqli_fetch_array($li1)));
^-----------------------------------^ ^------------------------------^
请注意所示的额外括号。您是否出于任何特殊原因使用了
global
?