将PHP多维数组转换为Postgres HStore

时间:2013-01-23 03:58:16

标签: php arrays postgresql multidimensional-array hstore

有没有人想出一个将数组转换为Postgres HStore值的好解决方案?

Pomms Converter https://github.com/chanmix51/Pomm/blob/master/Pomm/Converter/PgHStore.php不适用于多维数组。

1 个答案:

答案 0 :(得分:4)

如果您对将PHP数组转换为PostgreSQL Hstore数组(数据类型:hstore [])感兴趣,那么PHPG's Utils类可以解决问题(免责声明:我是该项目的维护者):

PostgreSQL Hstore阵列的PHP关联数组数组:

<?php
include 'phpg_utils.php';

$array = array(
  array(
    'name' => 'John',
    'age' => 32
  ),
  array(
    'name' => 'Jane',
    'age' => 28
  )
);

$hstore_array = PHPG_Utils::hstoreFromPhp($array, True);
print $hstore_array;

// Outputs:
//   {"\"name\"=>\"John\",\"age\"=>\"32\"","\"name\"=>\"Jane\",\"age\"=>\"28\""} 

// You can then directly insert this into the database:
pg_query("INSERT INTO my_table (hstore_arr_col) VALUES ('" . pg_escape_string($hstore_array) . "')");

PHP关联数组到PostgreSQL Hstore:     

$array = array(
    'name' => 'John',
    'age' => 32
);

$hstore = PHPG_Utils::hstoreFromPhp($array);
print $hstore ;

// Outputs:
//   "name"=>"John","age"=>"32"

// You can then directly insert this into the database:
pg_query("INSERT INTO my_table (hstore_col) VALUES ('" . pg_escape_string($hstore) . "')");

<强>更新

在PostgreSQL 9.4+世界中,我强烈建议使用PostgreSQL的JSONB数据类型而不是HSTORE。这允许您轻松地将PHP关联数组编码为JSON,反之亦然。这意味着没有特殊的图书馆和全面的官方支持。