2017-04-18 27 views
0

處理medoo插入查詢或其他查詢中錯誤的最佳方式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(); 
} 

什麼是真正的安全?

回答

-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,因爲它的錯誤處理很糟糕。我喜歡使用其他工具。

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分並提供參考鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/17361605) – FluffyKitten

+0

你的答案仍然不能解釋*爲什麼*你認爲第二個選項更安全。 – FluffyKitten

+0

再次編輯後的帖子。 – Andrew