我正在研究一个使用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)
我的代码,传递给模型的数据或其他内容是否存在任何问题。
答案 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]