使用Codeigniter 3.1.10将数组和JSON插入PostgreSQL时出错

时间:2019-03-05 14:44:46

标签: postgresql codeigniter codeigniter-3

我正在研究一个使用Codeigniter 3.1.10框架和PostgreSQL作为数据库的项目。并且我正在将控制器的表单值传递给模型,如下所示:

$data = array(
   'field1' => $value1,
   'field2' => $value2,
   'field3' => $value3
)

$result = $this->modal->function_insert($data);

其中值1是字符串,值2是数组,值3是JSON。我正在尝试将数据插入PostgreSQL。在表中,正确定义了数据类型,分别是text,text []和jsonb。 在模式下,我的代码如下:

public function function_insert($data)
{
   $result = $this->db->insert('table_name', $data);
}

我从codeigniter收到以下错误:

Severity: Notice
Message: Array to string conversion
Filename: database/DB_driver.php
Line Number: 1471
Backtrace:

查询显示如下:

INSERT INTO "table_name" ("field1", "field2", "field3") VALUES ('1', Array, Array)

我的代码,传递给模型的数据或其他内容是否存在任何问题。

1 个答案:

答案 0 :(得分:1)

不可能直接将PHP数组插入数据库。您必须执行以下示例中的一些技巧。

1。用于将PHP Array插入Array类型的Postgres Column值

 $phpArray = [1,3,3];
 $pgColValue  = '{'.implode($phpArray,',').'}';
 echo $pgColValue;
 //outputs
 {1,3,3} // Treated as postgres array

2。 用于插入JSON。使用内置函数名称json_encode()的PHP将PHP数组修饰为JSON字符串。

$phpArray = [1,3,3];
$pgColValue  = json_encode($phpArray);
echo $pgColValue;
//outputs
[1,3,3]