2013-05-25 3 views
0

Im работает в postgres 8.4 и PHP 5.4.3 с использованием pg_query_params. У меня есть таблица под названием armies taht, которая имеет 3 строки (ну, только для этого примера, у нее действительно больше). id является целым числом, а два других - временной отметкой с часовым поясом. Теперь SQL вставка:Ошибка ввода метки времени с помощью pg_query_params

INSERT INTO public.armies (идентификатор, 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(): запрос не выполнен: ERROR: недопустимый синтаксис ввода для типа timestamp: «now() + time» 00: 00: 50 '»

Его работы, когда я пытался вставить его в качестве сырья sql using pg_query как: 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'].

ответ

0

Пожалуйста, к сведению, что вы передаете строковые литералы

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

к pg_query_params, который не может подготовить действительное значение даты/времени от «сейчас()» или «в настоящее время() + время '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; 

Надеюсь, я был в состоянии помочь вам.