PHP の観点からは、エラー メッセージを回避する方法が少なくとも 2 つあります。
解決策 #1 : 呼び出しの前に @ 記号を追加して、エラー メッセージをミュートします。
@pg_query_params($db, $query, $params);
欠点は、失敗の理由が何であれログが残らないことです。
解決策 #2 : pg_send_query_params () を使用し、エラー コードを処理し、それが予期されたエラーであることを確認し、この場合のみ無視し、そうでない場合はエラーを発生させます。サンプルコード:
if (pg_send_query_params($db, $query, $params)) {
$res=pg_get_result($db);
if ($res) {
$state = pg_result_error_field($res, PGSQL_DIAG_SQLSTATE);
if ($state==0) {
// success
}
else {
// an error happened
if ($state=="23505") { // unique_violation
// process or ignore expected error
}
else {
// process other errors
trigger_error (pg_last_error(), E_USER_ERROR);
}
}
}
}
else {
trigger_error ("pg_send_query_params failed:".pg_last_error(), E_USER_ERROR);
}
どちらの場合も、PostgreSQL のエラー ログにエラーの痕跡が残りますが、これは別の問題であり、サーバー側の INSERT を使用して手続き型コードでエラー トラップを行うことで解決されます。クライアント側。