2017-06-15 19 views
1

我有一個變量,其存儲陣列, 例如print_r ($template); 給出以下輸出插入陣列中的多個行中的Postgres

Array 
(
    [0] => 351 
    [1] => 352 
) 

我要插入在具有2列的postgres的表這些值(ID ,模板)。

$sql = 'INSERT INTO "table"("id", "template") values ('."'$id'".','."'unnest($template)'".')'; 
$result = pg_query($sql); 

收到以下錯誤

invalid input syntax for integer: "unnest(Array)" 

希望輸出到像

---------- 
id | template 
---------- 
12 | 351 
---------- 
12 | 352 
---------- 
+0

id是prima ry鍵?如果是的話不可能 –

回答

0

我假設id不是主鍵

需要做如下圖所示: -

foreach($template as $temp){ 
$sql = "INSERT INTO `table`(`id`, `template`) values ($id,$temp)"; 
$result = pg_query($sql); 
} 

或做象下面這樣: -

$values = ""; 
foreach($template as $temp){ 
    $values .= "('".$id.",'".$temp."')"; 
} 
$sql = "INSERT INTO `table`(`id`, `template`) values $values"; 
$result = pg_query($sql); 

輸出: - https://eval.in/817145

+0

Esteann Afonso很樂意幫助你:) :) –

0

保持簡單與Pomm

<?php //… 
$sql = <<<SQL 
INSERT INTO table (id, template) 
    SELECT $*::int4 as id, unnest($*::int4[]) as template 
RETURNING id, template 
SQL; 

$results = $pomm['my_session'] 
    ->getQueryManager() 
    ->query($sql, [12, [351, 352]]); 

foreach ($results as $result) { 
    printf(
     "id:%d => template:%d\n", 
     $result['id'], 
     $result['template'] 
     ); 
}