2017-04-05 3 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となります。なぜ??私が望むのは、この特定のIDの特定のpath_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();. 

$結果はid = 1です。そして私がデータをプリントしようとすると、私が期待している3つのイメージのうち2つ、正しいfolder_pathだけがプリントされます。

+0

期待される出力を表示できますか? –

+0

私はしたい:example1.jpg、example2.jpg、example3.jpg + "。/ ...."(id = 1の) 私は得る:example2.jpg、example3.jpg + "。/ ...." (id = 1の) –

+0

はどこに** image.id =? "; ** –

答えて

0

問題はループの内側にありました。私は昨日試してみましたが、今日はそこにいました。

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

「すべての列がmysqli_stmt_fetch()を呼び出す前にアプリケーションによってバインドされている必要があることに注意してください。 これは、ループが完了した後で同時にデータを取得することを意味します。

関連する問題