我正在进行一个使用Codeignit3.1.10框架和PostgreSQL作为数据库的项目。我将表单值从控制器传递到模型,如下所示:
$data = array(
'field1' => $value1,
'field2' => $value2,
'field3' => $value3
)
$result = $this->modal->function_insert($data);其中值1是字符串,value2是数组,value3是JSON。我正在尝试将数据插入到PostgreSQL。在表中,正确地定义了数据类型,它们分别是文本、text[]和jsonb。在模态中,我的代码如下所示:
public function function_insert($data)
{
$result = $this->db->insert('table_name', $data);
}我从码点火器处得到以下错误:
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)我的代码、传递给模型的数据或其他东西中有什么问题吗?
发布于 2019-03-05 16:10:28
无法将PHP数组直接插入到数据库中。您必须做一些技巧,如下面的例子。
1.将PHP插入到数组类型的Postgres列值中
$phpArray = [1,3,3];
$pgColValue = '{'.implode($phpArray,',').'}';
echo $pgColValue;
//outputs
{1,3,3} // Treated as postgres array2.为了插入JSON.PHP内置函数名 json_encode()将PHP数组传输到JSON字符串。
$phpArray = [1,3,3];
$pgColValue = json_encode($phpArray);
echo $pgColValue;
//outputs
[1,3,3]https://stackoverflow.com/questions/55005402
复制相似问题