4

在 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();
}

什么是真实和安全的?

4

1 回答 1

-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,因为它的错误处理很糟糕。我喜欢使用其他工具。

于 2017-09-18T01:26:49.617 回答