PostgreSQL: массив данных с PHP - PullRequest
2 голосов
/ 03 апреля 2012

Я работаю над PostgeSQL с PHP и знаю, что PosrgeSQL позволяет определять столбцы таблицы как массивы.

Допустим, у меня есть такая таблица:

CREATE TABLE sal_emp (
    a            text ARRAY,
    b            text ARRAY,
    c            text ARRAY,
);

Это мои массивы:

$a = array(aa,bb,cc);
$b = array(dd,dd,aa);
$c = array(bb,ff,ee);

и я хочу вставить их в соответствующие столбцы, например:

     a     |     b      |      c     
-----------+------------+------------
{aa,bb,cc} | {dd,dd,aa} |  {bb,ff,ee}

Можно ли вставить его таким образом?

$a = implode(',', $a);
$b = implode(',', $b);
$c = implode(',', $c);
$a = array('a' => $a, 'b' => $b, 'c' => $c);
pg_insert($dbconn, 'table', $a);

Или есть лучший способ добиться того же результата?

1 Ответ

0 голосов
/ 03 апреля 2012

В вашем заявлении на создание есть ошибка.Это правильно:

CREATE TABLE sal_emp (
    a            text ARRAY,
    b            text ARRAY,
    c            text ARRAY
);

Если бы вы вставили вручную, вы бы сделали:

insert into sal_emp (a, b, c) values 
('{"some text"}', '{"some more", "a bit more"}', '{"even more"}');

или

insert into sal_emp (a, b, c) values 
(array ['some text'], array['some more', 'a bit more'], array['even more']);

Так что ... я не могупроверить это сейчас, но это будет что-то вроде этого:

$a = "array['" . implode("'],['", $a) . "']";
...
$a = array('a' => $a, 'b' => $b, 'c' => $c);
pg_insert($dbconn, 'table', $a);
...