2016-09-18 83 views
0

我認爲下面的代碼是使用try和catch在php中使用PDO的最佳方式。在PDO中使用try和catch的最好方法是什麼

在抓我形容:行號,文件和errormessage的

error_reporting(E_ALL); 

try{ 

    // code that works 

} 

catch(PDOException $e) 
{ 
    $errormessage = '<p> 
      Regelnummer: '.$e->getLine().'<br /> 
      Bestand: '.$e->getFile().'<br /> 
      Foutmelding: '.$e->getMessage().' 
     </p>'; 

    trigger_error($errormessage); 
} 

如果有人知道一個更好的方式來寫try和catch,請在下面寫。

+0

檢查[標籤:PDO]的信息頁:https://stackoverflow.com/tags/ pdo/info – hjpotter92

+0

最好的方法是[**不要**嘗試並抓住所有](https://phpdelusions.net/pdo#errors) –

回答

0

這裏是一個擴展PDO,可能給你一些想法一類的一個簡單的例子:

<?php 

    //DATABASE CONNECTION CONFIGURATION: 
    defined("HOST")   or define("HOST",   "localhost"); 
    defined("DBASE")  or define("DBASE",   "dbName"); 
    defined("USER")   or define("USER",   "root"); 
    defined("PASS")   or define("PASS",   "root"); 

    class DB extends PDO { 

     /*** 
     * @var PDO 
     */ 
     private static $dbHandle; 

     public static function getInstance(){ 
      try { 
       self::$dbHandle = new PDO('mysql:host='.HOST.';dbname='. DBASE,USER,PASS); 
       self::$dbHandle->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); 
       return self::$dbHandle; 
      }catch(PDOException $e){ 
       throw new Exception($e->getMessage()); 
      } 
     } 

     public static function getHandle(){ 
      if(!isset(self::$dbHandle)){ 
       self::$dbHandle = self::getInstance(); 
      } 
      return self::$dbHandle; 
     } 
    } 
+0

你讓事情變得更糟糕,沒有任何試圖抓住 –

+0

是應該是一個獨白或評論?如果是後者,你願意教育嗎? – Poiz

相關問題