- Fix SQL query execution errors handling in rcube_mdb2 class (#1485509)

release-0.6
alecpl 16 years ago
parent 24ed413328
commit 9c5bee69d7

@ -5,6 +5,7 @@ CHANGELOG RoundCube Webmail
---------- ----------
- Allow absolute URLs to images in HTML messages/sigs (#1485666) - Allow absolute URLs to images in HTML messages/sigs (#1485666)
- Fix message body which contains both inline attachments and emotions - Fix message body which contains both inline attachments and emotions
- Fix SQL query execution errors handling in rcube_mdb2 class (#1485509)
2009/01/08 (alec) 2009/01/08 (alec)
---------- ----------

@ -288,17 +288,18 @@ class rcube_mdb2
/** /**
* Get number of affected rows fort he last query * Get number of affected rows for the last query
* *
* @param number Optional query handle identifier
* @return mixed Number of rows or FALSE on failure * @return mixed Number of rows or FALSE on failure
* @access public * @access public
*/ */
function affected_rows($result = null) function affected_rows($res_id = null)
{ {
if (!$this->db_handle) if (!$this->db_handle)
return FALSE; return FALSE;
return $this->_get_result($result); return (int) $this->_get_result($res_id);
} }
@ -350,7 +351,7 @@ class rcube_mdb2
/** /**
* Get co values for a result row * Get col values for a result row
* *
* @param object Query result handle * @param object Query result handle
* @param number Fetch mode identifier * @param number Fetch mode identifier
@ -359,12 +360,8 @@ class rcube_mdb2
*/ */
function _fetch_row($result, $mode) function _fetch_row($result, $mode)
{ {
if (PEAR::isError($result)) if ($result === FALSE || PEAR::isError($result))
{
raise_error(array('code' => 500, 'type' => 'db', 'line' => __LINE__, 'file' => __FILE__,
'message' => $this->db_link->getMessage()), TRUE, FALSE);
return FALSE; return FALSE;
}
return $result->fetchRow($mode); return $result->fetchRow($mode);
} }
@ -398,13 +395,13 @@ class rcube_mdb2
* @param string Value to quote * @param string Value to quote
* @return string Quoted string for use in query * @return string Quoted string for use in query
* @deprecated Replaced by rcube_MDB2::quote_identifier * @deprecated Replaced by rcube_MDB2::quote_identifier
* @see rcube_MDB2::quote_identifier * @see rcube_mdb2::quote_identifier
* @access public * @access public
*/ */
function quoteIdentifier($str) function quoteIdentifier($str)
{ {
return $this->quote_identifier($str); return $this->quote_identifier($str);
} }
/** /**
@ -529,7 +526,7 @@ class rcube_mdb2
* Adds a query result and returns a handle ID * Adds a query result and returns a handle ID
* *
* @param object Query handle * @param object Query handle
* @return mixed Handle ID or FALE on failure * @return mixed Handle ID
* @access private * @access private
*/ */
function _add_result($res) function _add_result($res)
@ -537,26 +534,27 @@ class rcube_mdb2
// sql error occured // sql error occured
if (PEAR::isError($res)) if (PEAR::isError($res))
{ {
$this->db_error = TRUE;
$this->db_error_msg = $res->getMessage();
raise_error(array('code' => 500, 'type' => 'db', 'line' => __LINE__, 'file' => __FILE__, raise_error(array('code' => 500, 'type' => 'db', 'line' => __LINE__, 'file' => __FILE__,
'message' => $res->getMessage() . " Query: " . substr(preg_replace('/[\r\n]+\s*/', ' ', $res->userinfo), 0, 512)), TRUE, FALSE); 'message' => $res->getMessage() . " Query: "
return FALSE; . substr(preg_replace('/[\r\n]+\s*/', ' ', $res->userinfo), 0, 512)),
} TRUE, FALSE);
else
{
$res_id = sizeof($this->a_query_results);
$this->a_query_results[$res_id] = $res;
$this->last_res_id = $res_id;
return $res_id;
} }
$res_id = sizeof($this->a_query_results);
$this->last_res_id = $res_id;
$this->a_query_results[$res_id] = $res;
return $res_id;
} }
/** /**
* Resolves a given handle ID and returns the according query handle * Resolves a given handle ID and returns the according query handle
* If no ID is specified, the last ressource handle will be returned * If no ID is specified, the last resource handle will be returned
* *
* @param number Handle ID * @param number Handle ID
* @return mixed Ressource handle or FALE on failure * @return mixed Resource handle or FALSE on failure
* @access private * @access private
*/ */
function _get_result($res_id=NULL) function _get_result($res_id=NULL)
@ -564,10 +562,11 @@ class rcube_mdb2
if ($res_id==NULL) if ($res_id==NULL)
$res_id = $this->last_res_id; $res_id = $this->last_res_id;
if ($res_id && isset($this->a_query_results[$res_id])) if (isset($this->a_query_results[$res_id]))
return $this->a_query_results[$res_id]; if (!PEAR::isError($this->a_query_results[$res_id]))
else return $this->a_query_results[$res_id];
return FALSE;
return FALSE;
} }

Loading…
Cancel
Save