2017-09-21 51 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