postgresql相当于mysql errno

时间:2011-07-05 22:17:08

标签: php mysql postgresql

我正在将PHP脚本从MySQL转换为PostgreSQL。

我认为mysqli_errno的等价物是pg_last_error,可以吗?如果没有,你能否建议一个替代方案?

2 个答案:

答案 0 :(得分:3)

你是对的。您可以使用pg_last_error()来获取连接的最后一个错误。

示例:

pg_connect(...) or die('Could not connect: ' . pg_last_error());

答案 1 :(得分:1)

我不同意Francois Deschene的回答。

不幸的是,pg API似乎比MySQLi API弱一点。我考虑过使用PDO,但我还没有考虑过。

要回答你的问题,你必须稍微偏离相当于“mysqli_errno”(即实际的错误编号)。 pg_last_error()返回一个字符串,而不是一个数字。数字更容易处理。

http://www.postgresql.org/docs/8.1/static/errcodes-appendix.html

无论如何,要获得错误 NUMBER ,您必须使用功能组合。

pg_send_query_params(blah blah); // or pg_send_query() if you don't use prepared statements
$result = pg_get_result($connection);
$result_status = pg_result_status($result);
$mysqli_errno_equivalent = pg_result_error_field($result_status, PGSQL_DIAG_SQLSTATE);

希望其他人能提出更简单的解决方案。但这是我在我的代码中一直使用的(因为PostgreSQL附录A中的错误号比全文错误字符串更容易处理)。

幸运的是,编写一个简单的包装器是非常简单的,所以你不要一遍又一遍地重复自己。

文档似乎暗示这是获取号码的最佳方式。 http://www.php.net/manual/en/function.pg-result-error-field.php