【发布时间】:2014-05-21 08:16:26
【问题描述】:
我正在尝试使用 php 为 postgres 数据库将“INSERT”写入网页。这是从用 PHP 编写的注册表单中输入一些数据。目前我在 PHP 中有这段代码:
function insert($table, $data)
{
global $db;
if ($table and is_array($data) and !empty($data))
{
$columns = implode(',',array_keys($data));
$values = implode(',', escape($data));
$sql = "INSERT INTO {$table} ($columns) VALUES ($values)";
$q = pg_query($db, $sql) or db_error_out();
$result = pg_query($db, $sql) or db_error_out();
$insert_row = pg_fetch_row($result);
$id = $insert_row[0];
return ($id > 0) ? $id : FALSE;
} else {
return FALSE;
}
}
代码有效并且正在将该行插入到 postgres 数据库中,但我也收到此错误:
Warning: pg_query(): Query failed: ERROR: duplicate key value violates unique constraint "index_clients_on_first_name_and_last_name_and_phone_and_email"
DETAIL: Key (first_name, last_name, phone, email)=(test, test, 5461230, test@mail.com) already exists. in C:\xampp\htdocs\webpage_dev\system\database.php on line 165
第 165 行是 $result,我知道 $db 工作正常,所以我假设 $sql 有问题。
我的问题是如何摆脱这个错误并帮助插入。
【问题讨论】:
-
在 MySQL 上,有
INSERT ... ON DUPLICATE KEY UPDATE,但在 Postgre 中你遇到了问题。也许this 会有所帮助
标签: php sql postgresql constraints unique-constraint