2017-09-21 52 views
0
$con=mysqli_connect("localhost","root","","database"); 
// Check connection 
    if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
error_reporting(E_ALL^E_NOTICE); 
$query = "SELECT * FROM TT_posts WHERE post_status='publish' AND 
ping_status='open'"; 
$result = $con->query($query); 
while($row1 = $result->fetch_assoc()) 
foreach ($result as $row1){ 

$image = "SELECT * FROM TT_posts WHERE post_title='$row1[post_name]'"; 
$result1 = $con->query($image); 
while($row2 = $result1->fetch_assoc()) 
foreach ($result1 as $row2){ 
echo "<img src='".$row2[guid]."'>"; 
echo "<p>".$row1[post_title]."</p>"; 
}} 
?> 

实际上,下面的查询返回8个结果。Foreach内部foreach只显示一个结果

$query = "SELECT * FROM TT_posts WHERE post_status='publish' AND 
ping_status='open'"; 

当它执行循环时,它停止在第一个结果。我不知道究竟是什么停止了代码。

+1

你为什么要这么做内'while'一个'foreach'? 'while($ row2 = $ result1-> fetch_assoc()){echo“”;}'应该没问题。 –

回答

0

我想你已经混合了你的变量名。您的第一个while分配给$row1一行,那么您的foreach是指$result,而不是$row1。每次围绕foreach循环时,变量$row1实际上正在被覆盖。

你实际上并不需要或者foreach

while ($row1 = $result->fetch_assoc()) { 
    $image = "SELECT * FROM TT_posts WHERE post_title='$row1[post_name]'"; 
    $result1 = $con->query($image); 
    while ($row2 = $result1->fetch_assoc()) { 
    echo "<img src='".$row2[guid]."'>"; 
    echo "<p>".$row1[post_title]."</p>"; 
    } 
} 
+0

这就是为什么在foreach循环中,我给出了然后row2,result2像明智的变量名称... – user2177015

+0

不,在第一个while/foreach ...在此期间,$ row1被分配第一行。在foreach中,你指的是整个结果集,而不是行。你根本不需要这些foreach。 – danmullen

+0

所以,我现在需要做的。我很困惑... – user2177015