@@ -248,13 +248,14 @@ if (!defined('MYSQL_ASSOC')) { | |||||
if (!defined('MYSQL_NUM')) { | if (!defined('MYSQL_NUM')) { | ||||
define('MYSQL_NUM', MYSQLI_NUM); | define('MYSQL_NUM', MYSQLI_NUM); | ||||
} | } | ||||
//全局常用函数 | |||||
require_once(DEDEINC.'/common.func.php'); | |||||
if ($GLOBALS['cfg_dbtype'] == 'mysql' || $GLOBALS['cfg_dbtype'] == 'mysqli') { | if ($GLOBALS['cfg_dbtype'] == 'mysql' || $GLOBALS['cfg_dbtype'] == 'mysqli') { | ||||
require_once(DEDEINC.'/database/dedesqli.class.php'); | require_once(DEDEINC.'/database/dedesqli.class.php'); | ||||
} else { | } else { | ||||
require_once(DEDEINC.'/database/dedesqlite.class.php'); | require_once(DEDEINC.'/database/dedesqlite.class.php'); | ||||
} | } | ||||
//全局常用函数 | |||||
require_once(DEDEINC.'/common.func.php'); | |||||
//载入小助手配置,并对其进行默认初始化 | //载入小助手配置,并对其进行默认初始化 | ||||
$cfg_helper_autoload = array( | $cfg_helper_autoload = array( | ||||
'charset', /* 编码小助手 */ | 'charset', /* 编码小助手 */ | ||||
@@ -20,7 +20,7 @@ if (!defined('DEDEINC')) exit('dedebiz'); | |||||
//在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作 | //在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作 | ||||
//为了防止错误,操作完后不必关闭数据库 | //为了防止错误,操作完后不必关闭数据库 | ||||
if (!function_exists("mysqli_init")) { | if (!function_exists("mysqli_init")) { | ||||
echo "DedeBIZ提示:尚未发现开启mysqli模块,请在php.ini中启用`extension=mysqli`"; | |||||
ShowMsg("尚未发现开启mysqli模块,请在php.ini中启用`extension=mysqli`","javasctipt:;",-1) ; | |||||
exit; | exit; | ||||
} | } | ||||
$dsql = $dsqli = $db = new DedeSqli(FALSE); | $dsql = $dsqli = $db = new DedeSqli(FALSE); | ||||
@@ -45,7 +45,7 @@ class DedeSqli | |||||
var $parameters; | var $parameters; | ||||
var $isClose; | var $isClose; | ||||
var $safeCheck; | var $safeCheck; | ||||
var $showError = false; | |||||
var $showError = true; | |||||
var $recordLog = false; //记录日志到data/mysqli_record_log.inc便于进行调试 | var $recordLog = false; //记录日志到data/mysqli_record_log.inc便于进行调试 | ||||
var $isInit = false; | var $isInit = false; | ||||
var $pconnect = false; | var $pconnect = false; | ||||
@@ -108,14 +108,20 @@ class DedeSqli | |||||
@list($dbhost, $dbport) = explode(':', $this->dbHost); | @list($dbhost, $dbport) = explode(':', $this->dbHost); | ||||
!$dbport && $dbport = 3306; | !$dbport && $dbport = 3306; | ||||
$this->linkID = mysqli_init(); | $this->linkID = mysqli_init(); | ||||
mysqli_real_connect($this->linkID, $dbhost, $this->dbUser, $this->dbPwd, false, $dbport); | |||||
mysqli_errno($this->linkID) != 0 && $this->DisplayError('系统提示:链接('.$this->pconnect.') 到MySQL发生错误'); | |||||
try { | |||||
mysqli_real_connect($this->linkID, $dbhost, $this->dbUser, $this->dbPwd, false, $dbport); | |||||
mysqli_errno($this->linkID) != 0 && $this->DisplayError('链接('.$this->pconnect.') 到MySQL发生错误'); | |||||
} catch (Exception $e) { | |||||
$this->DisplayError("<span style='color:#dc3545'>连接数据库失败,可能数据库密码不对或数据库服务器出错</span>"); | |||||
exit; | |||||
} | |||||
//复制一个对象副本 | //复制一个对象副本 | ||||
CopySQLiPoint($this); | CopySQLiPoint($this); | ||||
} | } | ||||
//处理错误,成功连接则选择数据库 | //处理错误,成功连接则选择数据库 | ||||
if (!$this->linkID) { | if (!$this->linkID) { | ||||
$this->DisplayError("系统提示:<span style='color:#dc3545'>连接数据库失败,可能数据库密码不对或数据库服务器出错</span>"); | |||||
$this->DisplayError("<span style='color:#dc3545'>连接数据库失败,可能数据库密码不对或数据库服务器出错</span>"); | |||||
exit(); | exit(); | ||||
} | } | ||||
$this->isInit = TRUE; | $this->isInit = TRUE; | ||||
@@ -468,7 +474,7 @@ class DedeSqli | |||||
} | } | ||||
function RecordLog($runtime = 0) | function RecordLog($runtime = 0) | ||||
{ | { | ||||
$RecordLogFile = dirname(__FILE__).'/../data/mysqli_record_log.inc'; | |||||
$RecordLogFile = DEDEDATA.'/mysqli_record_log.inc'; | |||||
$url = $this->GetCurUrl(); | $url = $this->GetCurUrl(); | ||||
$savemsg = <<<EOT | $savemsg = <<<EOT | ||||
@@ -484,20 +490,10 @@ EOT; | |||||
//显示数据链接错误信息 | //显示数据链接错误信息 | ||||
function DisplayError($msg) | function DisplayError($msg) | ||||
{ | { | ||||
$errorTrackFile = dirname(__FILE__).'/../../data/mysqli_error_trace.inc'; | |||||
if (file_exists(dirname(__FILE__).'/../../data/mysqli_error_trace.php')) { | |||||
@unlink(dirname(__FILE__).'/../../data/mysqli_error_trace.php'); | |||||
} | |||||
$errorTrackFile = DEDEDATA.'/mysqli_error_trace.inc'; | |||||
if ($this->showError) { | if ($this->showError) { | ||||
$emsg = ''; | |||||
$emsg .= "<div><h3>DedeBIZ Error Warning!</h3>\r\n"; | |||||
$emsg .= "<div><a href='https://www.dedebiz.com' target='_blank' style='color:#dc3545'>Technical Support: https://www.dedebiz.com</a></div>"; | |||||
$emsg .= "<div style='line-helght:160%;font-size:14px;color:green'>\r\n"; | |||||
$emsg .= "<div style='color:blue'><br>Error page: <span style='color:#dc3545'>".$this->GetCurUrl()."</span></div>\r\n"; | |||||
$emsg .= "<div>Error infos: {$msg}</div>\r\n"; | |||||
$emsg .= "<br></div></div>\r\n"; | |||||
echo $emsg; | |||||
ShowMsg("{$msg}", "javascript:;", -1); | |||||
exit; | |||||
} | } | ||||
$savemsg = 'Page: '.$this->GetCurUrl()."\r\nError: ".$msg."\r\nTime".date('Y-m-d H:i:s'); | $savemsg = 'Page: '.$this->GetCurUrl()."\r\nError: ".$msg."\r\nTime".date('Y-m-d H:i:s'); | ||||
//保存MySql错误日志 | //保存MySql错误日志 | ||||
@@ -536,7 +532,7 @@ if (!function_exists('CheckSql')) { | |||||
$error = ''; | $error = ''; | ||||
$old_pos = 0; | $old_pos = 0; | ||||
$pos = -1; | $pos = -1; | ||||
$log_file = DEDEINC.'/../data/'.md5($cfg_cookie_encode).'_safe.txt'; | |||||
$log_file = DEDEDATA.'/'.md5($cfg_cookie_encode).'_safe.txt'; | |||||
$userIP = GetIP(); | $userIP = GetIP(); | ||||
$getUrl = GetCurUrl(); | $getUrl = GetCurUrl(); | ||||
//如果是普通查询语句,直接过滤一些特殊语法 | //如果是普通查询语句,直接过滤一些特殊语法 | ||||
@@ -17,11 +17,15 @@ if (!defined('DEDEINC')) exit('dedebiz'); | |||||
* @link https://www.dedebiz.com | * @link https://www.dedebiz.com | ||||
*/ | */ | ||||
@set_time_limit(0); | @set_time_limit(0); | ||||
if (!extension_loaded("sqlite3")) { | |||||
ShowMsg("尚未发现开启sqlite3模块,请在php.ini中启用`extension=sqlite3`","javasctipt:;",-1) ; | |||||
exit; | |||||
} | |||||
//在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作 | //在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作 | ||||
//为了防止错误,操作完后不必关闭数据库 | //为了防止错误,操作完后不必关闭数据库 | ||||
$dsql = $dsqlitete = $db = new DedeSqlite(FALSE); | $dsql = $dsqlitete = $db = new DedeSqlite(FALSE); | ||||
/** | /** | ||||
* Dede MySQLi数据库类 | |||||
* Dede SQLite3数据库类 | |||||
* | * | ||||
* @package DedeSqli | * @package DedeSqli | ||||
* @subpackage DedeBIZ.Libraries | * @subpackage DedeBIZ.Libraries | ||||
@@ -49,7 +53,7 @@ class DedeSqlite | |||||
var $parameters; | var $parameters; | ||||
var $isClose; | var $isClose; | ||||
var $safeCheck; | var $safeCheck; | ||||
var $showError = false; | |||||
var $showError = true; | |||||
var $recordLog = false; //记录日志到data/mysqli_record_log.inc便于进行调试 | var $recordLog = false; //记录日志到data/mysqli_record_log.inc便于进行调试 | ||||
var $isInit = false; | var $isInit = false; | ||||
var $pconnect = false; | var $pconnect = false; | ||||
@@ -249,6 +253,10 @@ class DedeSqlite | |||||
$t1 = ExecTime(); | $t1 = ExecTime(); | ||||
//var_dump($this->queryString); | //var_dump($this->queryString); | ||||
$this->result[$id] = $this->linkID->query($this->queryString); | $this->result[$id] = $this->linkID->query($this->queryString); | ||||
if (!$this->result[$id]) { | |||||
$this->DisplayError("执行SQL错误:{$this->linkID->lastErrorMsg()}"); | |||||
exit; | |||||
} | |||||
//var_dump(mysql_error()); | //var_dump(mysql_error()); | ||||
//查询性能测试 | //查询性能测试 | ||||
if ($this->recordLog) { | if ($this->recordLog) { | ||||
@@ -479,7 +487,7 @@ class DedeSqlite | |||||
} | } | ||||
function RecordLog($runtime = 0) | function RecordLog($runtime = 0) | ||||
{ | { | ||||
$RecordLogFile = dirname(__FILE__).'/../data/mysqli_record_log.inc'; | |||||
$RecordLogFile = DEDEDATA.'/mysqli_record_log.inc'; | |||||
$url = $this->GetCurUrl(); | $url = $this->GetCurUrl(); | ||||
$savemsg = <<<EOT | $savemsg = <<<EOT | ||||
@@ -495,22 +503,13 @@ EOT; | |||||
//显示数据链接错误信息 | //显示数据链接错误信息 | ||||
function DisplayError($msg) | function DisplayError($msg) | ||||
{ | { | ||||
$errorTrackFile = dirname(__FILE__).'/../../data/mysqli_error_trace.inc'; | |||||
if (file_exists(dirname(__FILE__).'/../../data/mysqli_error_trace.php')) { | |||||
@unlink(dirname(__FILE__).'/../../data/mysqli_error_trace.php'); | |||||
} | |||||
$errorTrackFile = DEDEDATA.'/sqlite_error_trace.inc'; | |||||
if ($this->showError) { | if ($this->showError) { | ||||
$emsg = ''; | |||||
$emsg .= "<div><h3>DedeBIZ Error Warning!</h3>\r\n"; | |||||
$emsg .= "<div><a href='https://www.dedebiz.com' target='_blank' style='color:#dc3545'>Technical Support: https://www.dedebiz.com</a></div>"; | |||||
$emsg .= "<div style='line-helght:160%;font-size:14px;color:green'>\r\n"; | |||||
$emsg .= "<div style='color:blue'><br>Error page: <span style='color:#dc3545'>".$this->GetCurUrl()."</span></div>\r\n"; | |||||
$emsg .= "<div>Error infos: {$msg}</div>\r\n"; | |||||
$emsg .= "<br></div></div>\r\n"; | |||||
echo $emsg; | |||||
ShowMsg("{$msg}", "javascript:;", -1); | |||||
exit; | |||||
} | } | ||||
$savemsg = 'Page: '.$this->GetCurUrl()."\r\nError: ".$msg."\r\nTime".date('Y-m-d H:i:s'); | $savemsg = 'Page: '.$this->GetCurUrl()."\r\nError: ".$msg."\r\nTime".date('Y-m-d H:i:s'); | ||||
//保存MySql错误日志 | |||||
//保存SQLite错误日志 | |||||
$fp = @fopen($errorTrackFile, 'a'); | $fp = @fopen($errorTrackFile, 'a'); | ||||
@fwrite($fp, '<'.'?php exit();'."\r\n/*\r\n{$savemsg}\r\n*/\r\n?".">\r\n"); | @fwrite($fp, '<'.'?php exit();'."\r\n/*\r\n{$savemsg}\r\n*/\r\n?".">\r\n"); | ||||
@fclose($fp); | @fclose($fp); | ||||