【问题标题】:Error when inserting array value into database [duplicate]将数组值插入数据库时​​出错[重复]
【发布时间】:2017-06-21 14:17:21
【问题描述】:

我正在向数据库中插入多张图片,但出现这样的错误

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 靠近第 1 行的 '0, 1) VALUES (Array, Array)'

INSERT INTO CompleteProjectImage (0, 1) 值(数组,数组)

我在控制器中保存所选图像的列表并将其传递给我的模型。

这是我要插入数据库的模型编码。

public function create($projectDetails, $projectDescriptions, $projectImages){

    $this->db->trans_begin();


    $this->db->insert(self::$tblCompleteProject, $projectDetails);
    $insert_id = $this->db->insert_id();

    foreach ($projectDescriptions as $projectDescription) {
        $insertDescription = array(
            'project_id'   => $insert_id,
            'description'  => $projectDescription,
        );
    }

    $this->db->insert(self::$tblCompleteProjectDescription, $insertDescription);

    foreach ($projectImages as $projectImage) {
        $insertImage[] = array(
            'project_id'   => $insert_id,
            'img_src'      => $projectImage['img_src'],
        );
    }

    $this->db->insert(self::$tblCompleteProjectImage, $insertImage);  // Error inserting to this database

    if ($this->db->trans_status() === FALSE)
    {
        $this->db->trans_rollback();
    }
    else
    {
        $this->db->trans_commit();
        return ($this->db->affected_rows() != 1) ? false : true;
    }

} 

print_array($insertImage); 结果:

Array
(
    [0] => Array
        (
            [project_id] => 5
            [img_src] => 594a7f9a79285.jpg
        )

    [1] => Array
        (
            [project_id] => 5
            [img_src] => 594a7f9a792851.jpg
        )

)

【问题讨论】:

  • 嗯.. 看起来那个古老框架中的查询构建器不支持在单个查询中插入多行。尝试查找 insert() 方法的源代码,或者在循环中执行插入操作。

标签: php mysql arrays codeigniter


【解决方案1】:

您不能将数组插入数据库,您应该将其转换为 Json 对象或一一选择索引。

insertImage 是一个数组,但您的 Insert 函数不接受数组并直接在查询中插入参数!

给你一个转机:

foreach ($projectImages as $key => $projectImage) {
        $insertImage[$key] = array(
            'project_id'   => $insert_id,
            'img_src'      => $projectImage['img_src'],
        );

$this->db->insert(self::$tblCompleteProjectImage, $insertImage[$key]);
}

我不确定这是你想要的,但根据 sn-p 这是正确的插入方式

【讨论】:

  • 它解决了我的问题。谢谢! :)
  • 不客气 :)
猜你喜欢
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
  • 2016-03-03
  • 1970-01-01
相关资源
最近更新 更多