我花了几个小时查看 PostgreSQL INSERT 数组文档和示例。但我只是越来越困惑。
我创建了word_mash_word_cube_definitions
columndefinition
为 type的表text[]
。
当我创建我使用的列时text[][]
。但\d+
显示为text[]
.
在 PHP 中,数组是:
$design[1] = [ 'letter' => null , 'direction' => 'down' , 'x-axis' => 7 , 'y-axis' => 3 ];
$design[2] = [ 'letter' => null , 'direction' => 'left' , 'x-axis' => 7 , 'y-axis' => 4 ];
$design[3] = [ 'letter' => null , 'direction' => 'up' , 'x-axis' => 6 , 'y-axis' => 4 ];
$design[4] = [ 'letter' => null , 'direction' => 'left' , 'x-axis' => 6 , 'y-axis' => 3 ];
$design[5] = [ 'letter' => null , 'direction' => 'down' , 'x-axis' => 5 , 'y-axis' => 3 ];
$design[6] = [ 'letter' => null , 'direction' => 'down' , 'x-axis' => 5 , 'y-axis' => 4 ];
我的目标是将整个数组存储在 1 行中。但我不知道这是否可能。
有人可以告诉我正确的吗
INSERT INTO word_mash_word_cube_definitions ( definition ) VALUE ( ??? )
我搞不清楚了。
如果您需要存储键控/关联数组,那么请
text[]
使用 JSON 而不是列。将列类型设置为jsonb
, 并json_encode($design)
在 PHP 中使用并存储结果字符串。当您读取该行时,使用json_decode($design, true)
将其转回原始 PHP 数组。以这种方式存储它提供了格式验证和 PostgreSQL 函数以在 JSON 中进行查询。
这种方法有一些限制,特别是在字符编码方面,如果你曾经为你的应用程序添加外语支持,这将变得很重要。