2017-04-05 45 views
0

好傢伙我有這個問題的表是:MySQL的左連接返回所有匹配的行除了第一個匹配行

 images: 

id || path_id || name 
1  1   example1.jpg 
2  1   example2.jpg 
3  1   example3.jpg 
4  2   example4.jpg 

     path: 

id || folder_path 
1  "./...." 
2  "./...." 

查詢是這樣的:

$query="SELECT images.name,path.folder_path FROM images 
     LEFT JOIN 
     path ON path.id=images.path_id 
     WHERE path.id=?"; 

讓說的?1。這將返回除匹配example1.jpg的第一張圖片之外的所有圖片。如果我把example2.jpg作爲第一排,那麼它將跳過example2.jpg,它會給我example1.jpg。爲什麼??我想要的是具有特定path_id +該特定id的folder_path的所有圖片。 整個查詢。

$query="SELECT images.name,path.folder_path FROM images 
     LEFT JOIN 
     path ON path.id=images.path_id 
     WHERE path.id=?"; 
     if($stmt= $mysqli->prepare($query)) 
     { 
       for($i=0;$i<count($result);$i++) 
       { 
        $bind_param= $result[$i]; 
        /*bind parameters*/ 
        $stmt->bind_param("s",$bind_param); 
        /* execute query */ 
        $stmt->execute(); 

        /* bind result variables */ 
        $stmt->bind_result($images,$path); 
        $stmt->fetch(); 
       } 
       $i=0; 
       while($stmt->fetch()){ 
        printf("%d) %s PATH:%s \n",$i,$images,$path); 
        $i++; 
       } 
       $stmt->close();. 

$ result是id = 1。當我嘗試打印數據時,它只打印我期望的3張圖像中的2張和正確的folder_path。

+0

你能告訴我們你的預期產出嗎? –

+0

我想:example1.jpg,example2.jpg,example3.jpg +「。/ ....」(id = 1) 我得到:example2.jpg,example3.jpg +「。/ ....」 (的id = 1) –

+0

更改WHERE到** WHERE image.id =?「; ** –

回答

0

問題是這條線內循環,我昨天試過,我沒有看到它在這一天。

for($i=0;$i<count($result);$i++){ 
.... 
.... 
$stmt->fetch(); /* <--- Problem */ 
} 

作爲記錄說:「請注意,在調用mysqli_stmt_fetch()之前,所有列都必須被應用程序綁定」。 這意味着我將在循環完成後取數據,而不是同時取數據。

相關問題