簡體   English   中英

PHP:Postgres數組和pg_insert

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM