我正在编写一个脚本以在PHP中安装应用程序的数据库。它运行良好,但是当我尝试安装不存在的数据库时,我只需要自己的错误消息,但是我一直在获取默认警告:警告:mysqli :: mysqli()[mysqli.mysqli]:(hy000/2005):未知MySQL Server主机" kasdasd"。
所以我知道主机是错误的,我希望这样做,只有我自己的错误。我如何摆脱此消息?
我的ConnectClass带有参数dbconfig $ config:
$this->mysqli = new mysqli($config->m_host,
$config->m_user,
$config->m_passw,
$config->m_db);
if ($this->mysqli->connect_error) {
return false;
}
$this->mysqli->set_charset("utf8");
return true;
一个简单的解决方案是查看您是否可以使用fsockopen打开主机名并抑制错误:
$port = 80;
if($fp = @fsockopen($config->m_host,$port)){
$db = new mysqli($config->m_host,$config->m_user,$config->m_passw,$config->m_db);
}else{
echo 'hostname not recognized';
}
@fclose($fp);
编辑:
您可以使用
if ($mysqli->connect_error) {
/** handle your error here **/
// Throw a custom exception if you like! (see below)
// or just echo "There was an error";
}
您可以进一步使用mysqli_connect_errno()
来找出发生的事情并相应处理。
编辑:mysqli不会投掷erros,因此下面是不正确的。
将您的代码包装在尝试键入中,然后您可以扔任何喜欢的错误:
try {
/** your code here **/
} catch (Exception $e) {
/** your handling here **/
// i.e.
throw new BadHostNameException($config->m_host);
// or
echo "Could not connect!":
}
注意:您应该用特定类型的异常替换 Exception $e
bad主机投掷,因此catch(MysqlBadHostnameException $e)
(错误类型将在您以前的尝试中的错误日志中,或者您可以在上面的示例中进行get_class($e)
。
//符合自定义异常:在您的课外添加。
class BadHostNameException extends Exception {}