【问题标题】:ForEach loop data insert into two database tableForEach 循环数据插入到两个数据库表中
【发布时间】:2016-02-22 10:28:56
【问题描述】:
$imagesarray[]=explode('&',$data[5]);
            $imag_temp  =   0;
            foreach($imagesarray as $image){
                if($imag_temp == 0 )
                {
                    $this->db->query("UPDATE " . DB_PREFIX . "product SET image = 'media/" . $image[0] . "' WHERE product_id = '" . (int)$product_id . "'");
                }else{
                    foreach($image as $img){
                            $this->db->query("INSERT INTO " . DB_PREFIX . "product_image SET image = 'media/" . $img . "' , product_id = '" . (int)$product_id . "'");
                    }
                }
                $imag_temp++;               

            }

This is my $data[5]=Arizona Diamondbacks.png&arizona-cardinals.png&Atlanta Braves.jpg&...&...&...n number can have..

我对每个位置都有 writend 查询。因为每个第一张图像都应该插入到一个表中,其余所有其他图像应该插入到另一个表中。现在对于每个循环,第一个图像都考虑为第一个 /。

【问题讨论】:

  • 你在用codeigniter

标签: php mysql arrays for-loop foreach


【解决方案1】:

如果这是针对单个产品的,则不需要 $imagesarray[]。

 $data[5] = "Arizona Diamondbacks.png&arizona-cardinals.png&Atlanta Braves.jpg";
 $imagesarray = explode('&',$data[5]);

将创建一个类似的数组

Array
(
    [0] => Arizona Diamondbacks.png
    [1] => arizona-cardinals.png
    [2] => Atlanta Braves.jpg
)

然后使用单个变量分配查询来执行

foreach($imagesarray as $key => $image){

    if($key == 0 )
    {
        $query = "UPDATE " . DB_PREFIX . "product SET image = 'media/" . $image . "' WHERE product_id = '" . (int)$product_id . "'";
    } else {
        $query = "INSERT INTO " . DB_PREFIX . "product_image SET image = 'media/" . $image . "' , product_id = '" . (int)$product_id . "'";
    }
    $this->db->query($query); 
}

【讨论】:

  • 我想要第一个图像数组 ( [0] => Arizona Diamondbacks.png ;) 这将在一个表中插入/更新,因为每个循环剩余将转到另一个表
【解决方案2】:

您遇到的错误是什么。您的插入查询不正确。 你需要注意的另一件事是你得到的是什么类型的数组......

您可以根据需要进行编辑

此代码正在运行,您可以使用插入和更新查询进行修改..

<?php 
$data[5]='Arizona Diamondbacks.png&arizona-cardinals.png&Atlanta Braves.jpg';

$imagesarray[]=explode('&',$data[5]);

foreach ($imagesarray[0] as $key => $value) {
    if($key==0){
        echo "hello"; // here is your update query 
    }
    else{
        echo "sorry"; // here is your insert query 
    }

}

【讨论】:

    【解决方案3】:

    我不知道你想要什么,但你有一些基本错误。在尝试编写代码之前,您应该了解更多关于 php 和 sql 的知识。

    你的代码应该是这样的

    $imagesarray = explode('&',$data[5]);
    $imag_temp = 0;
    foreach($imagesarray as $image){
        if($imag_temp == 0 )
        {
            $this->db->query("UPDATE " . DB_PREFIX . "product SET image = 'media/$image' WHERE product_id = '$product_id'");
        }else{
            foreach($image as $img){
                    $this->db->query("INSERT INTO " . DB_PREFIX . "product_image (image, product_id) VALUES ('media/$image', '$product_id')");
            }
        }
        $imag_temp++;               
    
    }
    

    进行一些研究以了解 sql 和 php 的工作原理,并进行一些调试,因为您的代码可能有更多错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多