使用pg_query_params插入时间戳时出错

时间:2013-05-25 03:51:54

标签: php postgresql-8.4

我使用pg_query_params在postgres 8.4和PHP 5.4.3中工作。我有一个名为armies taht的表有3行(仅适用于此示例,它确实有更多)。 id是一个整数,另外两个是timehamp withouth时区。现在SQL插入是:

INSERT INTO public.armies(id,build_start,build_end)VALUES($ 1,$ 2,$ 3)

我插入的数组是:

    $data['id'] = 1;
    $data['build_start'] = "now()";
    $data['build_end'] = "now() + time '00:00:50'";

错误是E_WARNING:pg_query_params():查询失败:错误:类型为timestamp的输入语法无效:«now()+ time '00:00:50'»

当我尝试使用pg_query将其作为原始sql插入时,它的工作原理如下:INSERT INTO public.armies(id,build_start,build_end)VALUES(11935,now(),now()+ time '00:00:50 “)。

所以我猜它与pg_query_params()有关,我真的很想用pg_query_params插入它。

我想要实现的是现在()与00:00:50秒的总和,所以我可以设法改变那个$ data ['build_end']。

1 个答案:

答案 0 :(得分:0)

请注意您传递的是字符串文字

$data['build_start'] = "now()";
$data['build_end'] = "now() + time '00:00:50'";

到pg_query_params,无法从“now()”或“now()+ time '00:00:50'”准备有效的日期/时间值。

而不是

INSERT INTO public.armies(id,build_start,build_end) VALUES ($1,$2,$3);

将其更改为

INSERT INTO public.armies(id,build_start) VALUES ($1,now());

并删除参数

$data['build_start'] = "now()";
$data['build_end'] = "now() + time '00:00:50'";

现在,当操作完成时,请更新表。

UPDATE public.armies SET build_end=now() WHERE id=$1;

希望我能帮到你。