使用pg_query_params插入时间戳错误


Error inserting a timestamp with pg_query_params

我在postgres 8.4和PHP 5.4.3使用pg_query_params工作。我有一个名为"军队"的表,它有3行(好吧,只是在这个例子中,它实际上有更多)。id是一个整数,另外两个是带时区的时间戳。现在SQL插入是:

INSERT INTO public. names (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():查询失败:错误:输入时间戳类型语法无效:«now() + time '00:00:50'»

它的工作,当我试图插入它作为一个原始sql使用pg_query: insert INTO public.armies(id,build_start,build_end) VALUES (11935,now(),now() +时间'00:00:50')。

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

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

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

$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;

希望我能帮到你