2010-04-21 39 views
0

我们有一个Web应用程序在工作时与Postgres SQL数据库交谈 - 我已经在服务器上设置了很多约束来保持数据的一致性,但是我们在报告中遇到了很多问题,以防止用户输入他的(无效的)数据在给定的时刻。违反PHP Postgres约束条件 - 我能否以某种方式获得约束名称?

我们唯一可以得到的是“约束违规”,但这不是很具描述性,从perl或直接从PGAdmin我们可以得到关于哪个约束导致失败的信息(约束的名称) - 有没有办法在PHP中做同样的事情?

我们能够升级PHP或使用不同的数据库访问模块,如果它有帮助,我有兴趣知道是否可以使用任何可以安全推荐的方法。

+0

谢谢你们 - 这也引导了我们(迫使我们看起来更难;))在PEAR中找到getUserInfo方法,使我们能够使用当前的解决方案获取描述。 感谢aswers,让我们离开问题滚动,我会在几天内接受顶级投票答案。 – RnR 2010-04-21 12:19:26

回答

2

您最好使用pg_result_error_field,该功能为您提供有关错误的更多详细信息。如果您使用存储过程并让这些抛出异常(包括DETAIL's and HINT's),那么在代码中进行错误处理将非常简单。

0

使用pg_last_error

$c = pg_connect('service=example'); 
$q = 'INSERT INTO example VALUES ($1, $2)'; 

$s = pg_query_params($c, $q, array('XXX',2.2222)); 
echo pg_last_error($c); 

我得到:

ERROR: duplicate key value violates unique constraint "example_example_key" 

"example_example_key"是有问题的约束的名称。