Enhanced database exceptions
authorAlexander Ebert <ebert@woltlab.com>
Thu, 15 Dec 2011 15:22:39 +0000 (16:22 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Thu, 15 Dec 2011 15:22:39 +0000 (16:22 +0100)
wcfsetup/install/files/lib/system/database/DatabaseException.class.php
wcfsetup/install/files/lib/system/database/statement/PreparedStatement.class.php

index 9cf8bd604e4b17cdb21e2918f3ae1a0a36ffc8d2..0630af858590170f122113aaf24770d6d488f2fd 100644 (file)
@@ -129,11 +129,14 @@ class DatabaseException extends SystemException {
                $this->information .= '<b>sql error:</b> ' . StringUtil::encodeHTML($this->getErrorDesc()) . '<br />';
                $this->information .= '<b>sql error number:</b> ' . StringUtil::encodeHTML($this->getErrorNumber()) . '<br />';
                $this->information .= '<b>sql version:</b> ' . StringUtil::encodeHTML($this->getSQLVersion()) . '<br />';
-               if ($this->preparedStatement !== null) $this->information .= '<b>sql query:</b> ' . StringUtil::encodeHTML($this->preparedStatement->getSQLQuery()) . '<br />';
-               
-               $this->information .= "\n<!-- db error: #".$this->db->getErrorNumber().': '.$this->db->getErrorDesc()." -->\n";
                if ($this->preparedStatement !== null) {
-                       $this->information .= "\n<!-- statement error: #".$this->preparedStatement->getErrorNumber().': '.$this->preparedStatement->getErrorDesc()." -->\n";
+                       $this->information .= '<b>sql query:</b> ' . StringUtil::encodeHTML($this->preparedStatement->getSQLQuery()) . '<br />';
+                       $parameters = $this->preparedStatement->getSQLParameters();
+                       if (!empty($parameters)) {
+                               foreach ($parameters as $index => $parameter) {
+                                       $this->information .= '<b>sql query parameter ' . $index . ':</b>' . StringUtil::encodeHTML($parameter) . '<br />';
+                               }
+                       }
                }
                
                parent::show();
index 5421e293857c1fba614ad99e1693b66c09487551..1bc7265db7aec376bd28dc3682ae0aa76b4028ab 100644 (file)
@@ -24,6 +24,12 @@ class PreparedStatement {
         */
        protected $database = null;
        
+       /**
+        * SQL query parameters
+        * @var array
+        */
+       protected $parameters = array();
+       
        /**
         * pdo statement object
         *
@@ -76,6 +82,7 @@ class PreparedStatement {
         * @param       array           $parameters
         */
        public function execute(array $parameters = array()) {
+               $this->parameters = $parameters;
                $this->database->incrementQueryCount();
                $this->database->beginTransaction();
                
@@ -101,6 +108,7 @@ class PreparedStatement {
         * @param       array           $parameters
         */
        public function executeUnbuffered(array $parameters = array()) {
+               $this->parameters = $parameters;
                $this->database->incrementQueryCount();
                
                try {
@@ -204,4 +212,13 @@ class PreparedStatement {
        public function getSQLQuery() {
                return $this->query;
        }
+       
+       /**
+        * Returns the SQL query parameters of this statement.
+        * 
+        * @return      array
+        */
+       public function getSQLParameters() {
+               return $this->parameters;
+       }
 }