Используйте moment.js для синтаксического анализа дат:
var caseOne = moment("Jul 8, 2005", "MMM D, YYYY", true).toDate();
var caseTwo = moment("2005-07-08", "YYYY-MM-DD", true).toDate();
Третий аргумент определяет строгий разбор (доступно с 2.3.0). Без него moment.js также может давать неверные результаты.
С точки зрения PostgreSQL, в псевдокоде:
* $insert_id = INSERT...RETURNING foo_id;-- only works for PostgreSQL >= 8.2.
* INSERT...; $insert_id = SELECT lastval(); -- works for PostgreSQL >= 8.1
* $insert_id = SELECT nextval('foo_seq'); INSERT INTO table (foo...) values ($insert_id...) for older PostgreSQL (and newer PostgreSQL)
pg_last_oid()
только работы, где у Вас есть OIDs. OIDs были прочь по умолчанию начиная с PostgreSQL 8.1.
Так, в зависимости от которой версии PostgreSQL Вы имеете, необходимо выбрать один из вышеупомянутого метода. Идеально, конечно, пользуйтесь библиотекой абстракции базы данных который краткие обзоры далеко вышеупомянутое. Иначе, в низкоуровневом коде, это похоже:
// yes, we're not using pg_insert()
$result = pg_query($db, "INSERT INTO foo (bar) VALUES (123) RETURNING foo_id");
$insert_row = pg_fetch_row($result);
$insert_id = $insert_row[0];
$result = pg_execute($db, "INSERT INTO foo (bar) values (123);");
$insert_query = pg_query("SELECT lastval();");
$insert_row = pg_fetch_row($insert_query);
$insert_id = $insert_row[0];
$insert_query = pg_query($db, "SELECT nextval('foo_seq');");
$insert_row = pg_fetch_row($insert_query);
$insert_id = $insert_row[0];
$result = pg_execute($db, "INSERT INTO foo (foo_id, bar) VALUES ($insert_id, 123);");
, самая безопасная ставка была бы третьим методом, но это является громоздким. Самое чистое является первым, но необходимо было бы выполнить недавний PostgreSQL. Большинство библиотек абстракции дб еще не использует первый метод все же.
Проверьте ВОЗВРАЩАЮЩИЙСЯ дополнительный пункт для оператора INSERT. (Свяжитесь с официальной документацией PostgreSQL)
, Но в основном, Вы делаете:
INSERT INTO table (col1, col2) VALUES (1, 2) RETURNING pkey_col
и сам оператор INSERT возвращает идентификатор (или безотносительно выражения, которое Вы определяете) затронутой строки.
С php.net:
$res=pg_query("SELECT nextval('foo_key_seq') as key");
$row=pg_fetch_array($res, 0);
$key=$row['key'];
// now we have the serial value in $key, let's do the insert
pg_query("INSERT INTO foo (key, foo) VALUES ($key, 'blah blah')");
Это должно всегда обеспечивать уникальный ключ, потому что ключ, полученный от базы данных, никогда не будет получаться снова.