PHP 和 Postgres:捕捉错误? [英] PHP and Postgres: catching errors?

查看:30
本文介绍了PHP 和 Postgres:捕捉错误?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果代码失败,我应该如何准备代码?使用 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.

这篇关于PHP 和 Postgres:捕捉错误?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆