【问题标题】:best way to error handling in medoomedoo 中错误处理的最佳方法
【发布时间】:2017-09-13 21:30:13
【问题描述】:

在 medoo 插入查询或其他查询中处理错误的最佳方法

所有查询中的代码正确。 例如,当插入多条记录时,insert() 方法的输出是一个数组。

1:

try{

                $db->pdo->beginTransaction();

                $deletes=$db->delete("table",array("c_id"=>$id));
                if($deletes===false || $deletes===null){
                    throw new Exception();
                }

                $res=$db->insert("tm_channel_admins",$insertsArray);
                if($res===false || $res===null){
                    throw new Exception();
                }


                $db->pdo->commit();

            }catch (Exception $e){
                $db->pdo->rollBack();
                exit("Error");
            }

2:

$res=$db->insert("tm_channel_admins",$insertsArray);
if($db->error()[0]!==0){
    throw new Exception();
}

什么是真实和安全的?

【问题讨论】:

    标签: php mysql medoo


    【解决方案1】:

    第二个更安全。第一个仍然可以工作,但会更加模棱两可,因为它返回 PDO 语句对象。第二个更可靠,因为它使用了 PDO 的错误处理功能。

    public function error()
    {
        return $this->statement ? $this->statement->errorInfo() : null;
    }
    

    https://github.com/catfan/Medoo/blob/6798b9698ee60ee98a4d342485904322922b2b3b/src/Medoo.php#L1469-L1472

    http://php.net/manual/en/pdostatement.errorinfo.php

    从目前的medoo版本(v1.4.5)开始,查询只会返回false:

    1. 使用开发者模式时
    2. 或者如果 PDO->prepare 返回 false/null(不是很可靠)

    我个人不喜欢 Medoo,因为它的错误处理很糟糕。我喜欢使用其他工具。

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • 你的回答仍然没有解释为什么你认为第二种选择更安全。
    • 再次编辑了上面的帖子。
    猜你喜欢
    • 1970-01-01
    • 2014-09-10
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    相关资源
    最近更新 更多