我知道我可以使用pg_query
将数组插入到Postgres数据库中。
INSERT into table (field) VALUES ('{{element, element},{}}')
但是如何使用pg_insert
?
$array["field"] = "{{element, element},{}}";
$result = pg_insert($con, "table", $array);
字符串{{element, element},{}}
是否会作为 2D Postgres数组实际插入field
?
我一直想测试一下,但目前我没有任何PostgreSQL数据库可供测试..
答案 0 :(得分:3)
我刚刚运行了你的具体例子。
(1)在Postgres:
CREATE TABLE atable (afield text[][]);
(2)在PHP中:
$array["afield"] = "{{'element', 'element'},{}}";
$result = pg_insert($this->conn, "atable", $array);
我收到以下错误:
Notice: pg_insert(): Unknown or system data type '_text' for 'afield' in ...
我尝试使用数组值:使其成为2x2数组,一维等等 - 相同的结果。我甚至改变了表格,将字段作为一维数组:text[]
并相应地更改了代码 - 我仍然得到相同的结果。
我开始进一步挖掘并在pg_insert
pg_query("INSERT INTO...")
上找到以下内容:
此功能是实验性的。它的功能是这个功能的行为 名称和周围文档可能会更改,恕不另行通知 PHP的未来版本。使用此功能需要您自担风险。
基本上,它很漂亮,不应该使用。有趣的是,使用
{{1}}
工作得很好。希望这能回答你的问题。 :)
答案 1 :(得分:0)
尽可能多的尺寸,但两个很好。
=> CREATE SCHEMA ztest;
CREATE SCHEMA
=> CREATE TABLE tt (a int[3][3]);
CREATE TABLE
=> INSERT INTO tt VALUES (ARRAY[ARRAY[1,2,3], ARRAY[4,5,6], ARRAY[7,8,9]]), (ARRAY[ARRAY[11,12,13],ARRAY[14,15,16],ARRAY[17,18,19]]);
INSERT 0 2
=> SELECT * FROM tt;
a
------------------------------------
{{1,2,3},{4,5,6},{7,8,9}}
{{11,12,13},{14,15,16},{17,18,19}}
(2 rows)
=> INSERT INTO tt VALUES ('{{21,22,23},{24,25,26},{27,28,29}}');
INSERT 0 1
=> SELECT * FROM tt;
a
------------------------------------
{{1,2,3},{4,5,6},{7,8,9}}
{{11,12,13},{14,15,16},{17,18,19}}
{{21,22,23},{24,25,26},{27,28,29}}
(3 rows)
=> SELECT a[2][3] FROM tt;
a
----
6
16
26
(3 rows)