Postgresql эквивалент MySQL Errno - PullRequest
2 голосов
/ 06 июля 2011

Я конвертирую PHP-скрипт из MySQL в PostgreSQL.

Я думал, что эквивалент mysqli_errno равен pg_last_error, это нормально?Если нет, не могли бы вы предложить альтернативу?

Ответы [ 2 ]

3 голосов
/ 06 июля 2011

Ты прав.Вы можете использовать pg_last_error(), чтобы получить последнюю ошибку для соединения.

Пример:

pg_connect(...) or die('Could not connect: ' . pg_last_error());
1 голос
/ 07 июля 2011

Я не согласен с ответом Франсуа Дешене.

К сожалению, 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);

Надеюсь, кто-то еще найдет более простое решение. Но это то, что я использовал в своем коде (потому что с номерами ошибок в Приложении A к PostgreSQL работать гораздо проще, чем с полнотекстовыми строками ошибок).

К счастью, написать простую обертку вокруг этого тривиально, чтобы не повторяться снова и снова.

Документация подразумевает, что это лучший способ получить номер. http://www.php.net/manual/en/function.pg-result-error-field.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...