用两个foreach更新表



我有两个表:

表IMAGES

id_images | dir_image | post_id
     1      image1.jpg   1
     2      image2.jpg   1
     3      image3.jpg   1
     4      image4.jpg   1
     5      image5.jpg   2
     6      image6.jpg   2
     7      image7.jpg   2
     8      image8.jpg   2

表POSTS

id_post   |          slug        |   title
 1           title_post            Title Post 
 2           title_post_2          Title Post 2

PHP

     public function update($idsimages, $dir_images, $idPost, $title, $slug)
                {
                    try {
                    $stmt = $this->db->prepare("UPDATE posts SET
    title = :title, 
    slug = :slug,
    WHERE id_post=:id_post");
                    $stmt->bindParam(":id_post",$idPost);
                    $stmt->bindParam(":title",$title);  
                    $stmt->bindParam(":slug",$slug); 
                    $stmt->execute();

                    $stmt = $this->db->prepare("UPDATE images SET
    dir_images = :dir_images
WHERE id_images = :id_images");

                    foreach ($idsimages as $idsimage) { 

                            foreach ($dir_images as $item){
                                $stmt->bindParam(":id_images", $idsimage);
                                $stmt->bindParam(":dir_images", $item);             
                             }  //end foreach dir_images                
                       $stmt->execute();
                    } // end foreach idsimages

                    return true;
                }
                catch(PDOException $e) {
                    echo $e->getMessage();    
                    return false;
                }
                }

变量$idsimages是ID的数组$id_images

变量$dir_images是应根据数组$idsimages 的id更新的url数组

用上面的php代码正确地更新了post表的标题,但没有更新表的图像


打印

print_r($idsimages)

Array ( [0] => 5 [1] => 6 [2] => 7 [3] => 8 )

print_r($dir_images)

Array ( [0] => uploads/images/image5.jpg [1] => uploads/images/image6.jpg [2] => uploads/images/image7.jpg [3] => uploads/images/image8.jpg)

如果我在函数中插入回波:

$stmt->bindParam(":id_images", $idsimage);
echo $idsimage;
$stmt->bindParam(":dir_images", $item); 
echo $item;

返回:

5 image5.PNG 5 image6.jpg 5 image6.jpg 5  image6.jpg
6 image5.PNG 6 image6.jpg 6 image6.jpg 6 image6.jpg
7 image5.PNG 7 image6.jpg 7 image6.jpg 7 image6.jpg
8 image5.PNG 8 image6.jpg 8 image6.jpg 8 image6.jpg

您需要这样的东西:

$stmt = $this->db->prepare("UPDATE images SET
   dir_images = :dir_images
   WHERE id_images = :id_images");
foreach ($idsimages as $key => $idsimage) { 
    $stmt->bindParam(":id_images", $idsimage);
    $stmt->bindParam(":dir_images", $dir_images[$key]);             
    $stmt->execute();
} // end foreach idsimages

最新更新