/** * @description 构造函数,创建一个连接 * */ public function __construct($host, $port, $user, $passwd, $dbName, $logFile = null) { $dsn = "mysql://{$user}:{$passwd}@{$host}:{$port}/{$dbName}?charset=utf8&new_link=true"; $options = array('debug' => 2, 'portability' => MDB2_PORTABILITY_ALL); $this->_mConnection =& MDB2::connect($dsn, $options); if (MDB2::isError($this->_mConnection)) { die(MDB2::errorMessage($this->_mConnection)); } $this->_logFile = str_replace('.date.', date('.Ymd.'), $logFile); $this->_logFile = str_replace('dbname', $dbName, $this->_logFile); }
function errorMessage($value) { return MDB2::errorMessage($value); }
/** * This method is used to communicate an error and invoke error * callbacks etc. Basically a wrapper for PEAR::raiseError * without the message string. * * @param mixed integer error code, or a PEAR error object (all * other parameters are ignored if this parameter is * an object * * @param int error mode, see PEAR_Error docs * * @param mixed If error mode is PEAR_ERROR_TRIGGER, this is the * error level (E_USER_NOTICE etc). If error mode is * PEAR_ERROR_CALLBACK, this is the callback function, * either as a function name, or as an array of an * object and method name. For other error modes this * parameter is ignored. * * @param string Extra debug information. Defaults to the last * query and native error code. * * @return object a PEAR error object * * @see PEAR_Error */ function &raiseError($code = null, $mode = null, $options = null, $userinfo = null) { // The error is yet a MDB2 error object if (is_object($code)) { return PEAR::raiseError($code, null, null, null, null, null, true); } if (is_null($userinfo) && isset($this->connection) && $this->connection) { if (!empty($this->last_query)) { $userinfo = "[Last query: {$this->last_query}]\n"; } $native_errno = $native_msg = null; list($code, $native_errno, $native_msg) = $this->errorInfo($code); if ($native_errno !== null) { $userinfo .= "[Native code: {$native_errno}]\n"; } if ($native_msg !== null) { $userinfo .= "[Native message: " . strip_tags($native_msg) . "]\n"; } } else { $userinfo = "[Error message: {$userinfo}]\n"; } if (empty($code)) { $code = MDB2_ERROR; } $msg = MDB2::errorMessage($code); return PEAR::raiseError("MDB2 Error: {$msg}", $code, $mode, $options, $userinfo); }
/** * Remove from queue mail with $id identifier. * * @param integer $id Mail ID * @return bool True on success else Mail_Queue_Error class * * @access public */ function deleteMail($id) { $query = 'DELETE FROM ' . $this->mail_table . ' WHERE id = ' . $this->db->quote($id, 'text'); $res = $this->db->query($query); if (PEAR::isError($res)) { return new Mail_Queue_Error(MAILQUEUE_ERROR_QUERY_FAILED, $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__, 'MDB2::query failed - "' . $query . '" - ' . MDB2::errorMessage($res)); } return true; }
/** * MDB2_Error constructor. * * @param mixed $code MDB error code, or string with error message. * @param integer $mode what 'error mode' to operate in * @param integer $level what error level to use for * $mode & PEAR_ERROR_TRIGGER * @param smixed $debuginfo additional debug info, such as the last query */ function MDB2_Error($code = MDB2_ERROR, $mode = PEAR_ERROR_RETURN, $level = E_USER_NOTICE, $debuginfo = null) { if (is_int($code)) { $this->PEAR_Error('MDB2 Error: ' . MDB2::errorMessage($code), $code, $mode, $level, $debuginfo); } else { $this->PEAR_Error("MDB2 Error: {$code}", MDB2_ERROR, $mode, $level, $debuginfo); } }
/** * MDB2_Error constructor. * * @param mixed MDB2 error code, or string with error message. * @param int what 'error mode' to operate in * @param int what error level to use for $mode & PEAR_ERROR_TRIGGER * @param mixed additional debug info, such as the last query */ function __construct($code = MDB2_ERROR, $mode = PEAR_ERROR_RETURN, $level = E_USER_NOTICE, $debuginfo = null, $dummy = null) { if (null === $code) { $code = MDB2_ERROR; } $this->PEAR_Error('MDB2 Error: ' . MDB2::errorMessage($code), $code, $mode, $level, $debuginfo); }
exit; } // fetch info about the bug into $bug $bug = bugs_get_bug($bug_id); if (!is_array($bug)) { echo json_encode(array('result' => array('error' => 'No such bug'))); exit; } if (!bugs_has_access($bug_id, $bug, $pwd, $user_flags)) { echo json_encode(array('result' => array('error' => 'No access to bug'))); exit; } if (!empty($_POST['ncomment']) && !empty($_POST['user'])) { $user = htmlspecialchars(trim($_POST['user'])); $ncomment = htmlspecialchars(trim($_POST['ncomment'])); $prep = $dbh->prepare("\n\t\tINSERT INTO bugdb_comments (bug, email, ts, comment, reporter_name, comment_type)\n\t\tVALUES (?, ?, NOW(), ?, ?, 'svn')\n\t"); $res = $prep->execute(array($bug_id, "{$user}@php.net", $ncomment, $user)); if ($res) { echo json_encode(array('result' => array('status' => $bug))); exit; } else { echo json_encode(array('result' => array('error' => MDB2::errorMessage($res)))); exit; } } else { if (!empty($_POST['getbug'])) { echo json_encode(array('result' => array('status' => $bug))); exit; } } echo json_encode(array('result' => array('error' => 'Nothing to do')));
/** * DB::errorMessage() */ public static function errorMessage($value) { return MDB2::errorMessage($value); }
/** * Preload mail to queue. * * @return mixed True on success else Mail_Queue_Error object. * @access private */ protected function _preload() { $res = $this->_checkConnection(); $query = 'SELECT * FROM ' . $this->db->quoteIdentifier($this->mail_table) . ' WHERE sent_time IS NULL AND try_sent < ' . $this->retry . ' AND time_to_send <= ' . $this->db->quote(date('Y-m-d H:i:s'), 'timestamp') . ' ORDER BY time_to_send'; $this->db->setLimit($this->limit, $this->offset); $res = $this->query($query); $this->_last_item = 0; $this->queue_data = array(); //reset buffer $errors = array(); while ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)) { //var_dump($row['headers']); if (!is_array($row)) { $msg = sprintf($this->error_tpl, $query, MDB2::errorMessage($res)); $errors[] = new Mail_Queue2_Exception($msg, Mail_Queue2::ERROR_QUERY_FAILED); continue; } $body = new Mail_Queue2_Body(); $body->setId($row['id'])->setCreateTime($row['create_time'])->setTimeToSend($row['time_to_send'])->setSentTime($row['sent_time'])->setIdUser($row['id_user'])->setIp($row['ip'])->setSender($row['sender'])->setRecipient($this->_isSerialized($row['recipient']) ? unserialize($row['recipient']) : $row['recipient'])->setHeaders(unserialize($row['headers']))->setBody(unserialize($row['body']))->setDeleteAfterSend($row['delete_after_send'])->setTrySent($row['try_sent']); $this->queue_data[$this->_last_item] = $body; $this->_last_item++; } if (count($errors) > 0) { return $errors; } return true; }
public function __construct($path) { global $db; if (is_string($path)) { $_CONF['smbind_ng'] = $path; $_CONF['title'] = "SMBind-ng"; $_CONF['version'] = 'v0.91c'; $_CONF['footer'] = $_CONF['title'] . $_CONF['version']; $_CONF['marker'] = "Forked by PtY 2015(GPL)"; $_CONF['template'] = "default"; $_CONF['recaptcha'] = false; $_CONF['tmp_path'] = $path . "tmp"; $_CONF['nocaptcha'] = array(); $_CONF['path'] = "/etc/smbind-ng/zones/"; $_CONF['conf'] = "/etc/smbind-ng/smbind-ng.conf"; $_CONF['namedcheckconf'] = is_executable("/usr/sbin/named-checkconf") ? "/usr/sbin/named-checkconf" : ""; $_CONF['namedcheckzone'] = is_executable("/usr/sbin/named-checkzone") ? "/usr/sbin/named-checkzone" : ""; $_CONF['rndc'] = is_executable("/usr/sbin/rndc") ? "/usr/sbin/rndc" : ""; $_CONF['zonesigner'] = "/usr/sbin/zonesigner"; $_CONF['rollinit'] = "/usr/sbin/rollinit"; $_CONF['isdnssec'] = false; $_CONF['dig'] = is_executable("/usr/bin/dig") ? "/usr/bin/dig" : ""; include $path . 'config/config.php'; $_CONF['zonesigner'] = is_executable($_CONF['zonesigner']) ? $_CONF['zonesigner'] : ""; $_CONF['rollinit'] = is_executable($_CONF['rollinit']) ? $_CONF['rollinit'] : ""; $_CONF['isdnssec'] = $_CONF['isdnssec'] === true && $_CONF['zonesigner'] != "" && $_CONF['rollinit'] != "" ? true : false; $_CONF['recaptcha'] = $_CONF['recaptcha'] === true && strlen($_CONF['rc_pubkey']) > 0 && strlen($_CONF['rc_privkey']) > 0 ? true : false; if (!isset($_CONF['db_host'])) { $_CONF['db_host'] = 'localhost'; } if (!isset($_CONF['db_port'])) { switch ($_CONF['db_type']) { case 'mysql': case 'mysqli': $_CONF['db_port'] = '3306'; break; case 'pgsql': $_CONF['db_port'] = '5432'; break; } } $dsn = array('phptype' => $_CONF['db_type'], 'username' => $_CONF['db_user'], 'password' => $_CONF['db_pass'], 'database' => $_CONF['db_db'], 'hostspec' => $_CONF['db_host'], 'port' => $_CONF['db_port'], 'charset' => 'utf8'); $dbopt = array('persistent' => true); $db = MDB2::factory($dsn, $dbopt); if (MDB2::isError($db)) { die("Database error: " . MDB2::errorMessage($db)); } else { $db->setFetchMode(MDB2_FETCHMODE_ASSOC); } $query = $db->query("SELECT prefkey, prefval FROM options WHERE preftype = 'normal'"); if (MDB2::isError($query)) { $err = $query->getMessage() . "\n" . $query->getDebugInfo(); error_log($err); die($err); } while ($res = $query->fetchRow()) { $key = $res['prefkey']; switch ($key) { case 'prins': case 'secns': $keyparam = substr($key, 0, 3) . '_d' . substr($key, -2); break; default: $keyparam = $key; } $_CONF[$keyparam] = $res['prefval']; } $query = $db->query("SELECT prefkey FROM options WHERE prefval = 'on' AND preftype = 'record' ORDER BY prefkey"); $_CONF['parameters'] = array(); while ($res = $query->fetchRow()) { $_CONF['parameters'][] = $res['prefkey']; } $query = $db->query("SELECT DISTINCT type FROM records"); while ($res = $query->fetchRow()) { $_CONF['parameters'][] = $res['type']; } $_CONF['parameters'] = array_unique($_CONF['parameters']); $_CONF['dsn'] = $dsn; $this->info = $_CONF; } }
/** * MDB2_Error constructor. * * @param mixed MDB2 error code, or string with error message. * @param int what 'error mode' to operate in * @param int what error level to use for $mode & PEAR_ERROR_TRIGGER * @param smixed additional debug info, such as the last query */ function __construct($code = MDB2_ERROR, $mode = PEAR_ERROR_RETURN, $level = E_USER_NOTICE, $debuginfo = null) { parent::__construct('MDB2 Error: ' . MDB2::errorMessage($code), $code, $mode, $level, $debuginfo); }
function log_db_error($error_result, $query, $msg) { if ($msg) { $log_msg = "DB ERROR {$msg}: \""; } else { $log_msg = "DB ERROR: \""; } $log_msg .= MDB2::errorMessage($error_result); $log_msg .= "\" for query \"{$query}\""; error_log($log_msg); }
$order_by_clauses = array("COUNT(v.bug) {$direction}"); break; } } elseif ($order_by != '') { $order_by_clauses = array("{$order_by} {$direction}"); } if ($status == 'Feedback') { $order_by_clauses[] = "bugdb.ts2 {$direction}"; } if (count($order_by_clauses)) { $query .= ' ORDER BY ' . implode(', ', $order_by_clauses); } if ($limit != 'All' && $limit > 0) { $query .= " LIMIT {$begin}, {$limit}"; } if (stristr($query, ';')) { $errors[] = 'BAD HACKER!! No database cracking for you today!'; } else { $res = $dbh->prepare($query)->execute(); if (!PEAR::isError($res)) { $rows = $res->numRows(); $total_rows = $dbh->prepare('SELECT FOUND_ROWS()')->execute()->fetchOne(); } else { $error = MDB2::errorMessage($res); $errors[] = $error; } if (defined('MAX_BUGS_RETURN') && $total_rows > $rows) { $warnings[] = 'The search was too general, only ' . MAX_BUGS_RETURN . ' bugs will be returned'; } } }