PHP 和 Postgres:捕捉错误?

2021-12-26 00:00:00 postgresql error-handling php

如果代码失败,我应该如何准备代码?使用 try-catch 语句还是?

function delete_question ( $question_id ) {
    $dbconn = pg_connect("host=localhost port=5432 dbname=heoa user=heoa password=123");

    // removes questions and its dependencies: answers and tags
    $result = pg_query_params ( $dbconn,
        'DELETE FROM questions
        WHERE question_id = $1',
        array ( $question_id )
    );

推荐答案

如果你想要异常,那么你需要使用 PDO.

If you want exceptions, then you need to use PDO.

对于 pg_* 函数和您的代码,您需要检查 $result 是否具有 false 值,如果是,则发生错误.

in case of pg_* functions and your code, you need to check whether $result has the value of false, if it does, then an error occured.

您可以使用 pg_last_error() 获取错误描述

You can get the error description with pg_last_error()

像这样:

$result = pg_query_params ( $dbconn,
        'DELETE FROM questions
        WHERE question_id = $1',
        array ( $question_id )
    );


if ($result === false) {
    print pg_last_error($dbconn);
} else {
    print 'everything was ok';
}

所以,基本上,每次使用 pg_* 函数时,都需要检查是否返回了 false,这些函数就是这样.

So, basically, every time you use a pg_* function, you need to check whether false was returned, that's just the way it is with those functions.

是的,您可以构建自己的包装器,因此您可以调用 my_db_query() 而不是 pg_query*,然后它会执行返回值检查和异常抛出.

Yes, you can build your own wrappers so instead of pg_query* you call my_db_query(), which then does the return value checking and exception throwing.

或者,您可以使用 PDO,它可以针对可能出现的所有错误向您抛出 PDOException.

Or, you could go with PDO, which is able to throw you PDOException for all the errors that can occour.

相关文章