[英]PHP: Postgres Array and pg_insert
我知道我可以使用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數據庫來測試..
我剛剛運行了你的具體例子。
(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
PHP文檔中找到以下pg_insert
:
這個功能是實驗性的。 在將來的PHP版本中,此函數,其名稱和周圍文檔的行為可能會更改,恕不另行通知。 使用此功能需要您自擔風險。
基本上,它很漂亮,不應該使用。 有趣的是,使用
pg_query("INSERT INTO...")
工作得很好。 希望這能回答你的問題。 :)
盡可能多的尺寸,但兩個很好。
=> 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.