链接mysql的安静模式

2016-07-07 16:49 来源:www.chinab4c.com 作者:ecshop专家

/**
* 连接数据库
*
* author wj
* paramstring$dbhost数据库主机名
* paramstring$dbuser数据库用户名
* paramstring$dbpw数据库密码
* paramstring$charset数据库字符集
* paramstring$pconnect 持久链接,1为开启,0为关闭
* paramstring$quiet 安静模式,1为开启,0为关闭
* return bool
**/
function connect($dbhost, $dbuser, $dbpw, $dbname = '', $charset = 'utf8', $pconnect = 0, $quiet = 0)
{
if ($pconnect)
{
if (!($this->_link_id = @mysql_pconnect($dbhost, $dbuser, $dbpw)))
{
if (!$quiet)
{
$this->ErrorMsg();
}

return false;
}
}
else
{
if (PHP_VERSION >= '4.2')
{
$this->_link_id = @mysql_connect($dbhost, $dbuser, $dbpw, true);
}
else
{
$this->_link_id = @mysql_connect($dbhost, $dbuser, $dbpw);

mt_srand((double)microtime() * 1000000); // 对 PHP 4.2 以下的版本进行随机数函数的初始化工作
}

if (!$this->_link_id)
{
if (!$quiet)
{
$this->ErrorMsg();
}

return false;
}
}
这里的安静模式是什么意思,请指教,谢谢!

回答:
安静模式就是执行类里面这个方法errorMsg,可以看到ecmall对mysql的错误处理
function ErrorMsg($message = '', $sql = '')
{
if ($message)
{
echo "<b>ECMall info</b>: $message\n\n";
}
else
{
static $last_errno = null;
$error = mysql_error();
$error_no = mysql_errno();
if ($last_errno == $error_no)
{
exit;
}
if ($last_errno === null)
{
$last_errno = $error_no;
}
Lang::load(lang_file('common'));

echo "<b>MySQL server error report:</b><br />";
echo "Error:",$error, "<br />";
echo "Errno:", $error_no, "<br />";
echo '<a href="http://ecmall.shopex.cn/help/faq.php?type=mysql&amp;dberrno=' . $error_no . '&amp;dberror=' . urlencode($error) . '" target="_blank">'. Lang::get('mysql_error_report') . '</a>';
}

exit;
}