Php 在没有codeigniter的情况下测试数据库连接,可以吗?
我刚刚完成了我的第一个版本的automailer,一个我已经工作了一段时间的程序。我刚写完安装程序。它的工作是从模板重写codigniter配置。我已经完成了读/写操作,但我希望能够测试用户提供的服务器凭据,而不会在错误时引发系统错误。除了mysql\u connect之外,还有什么函数可以用来测试返回true或false的连接,并且不会让codeigniter感到不适 这就是我所拥有的Php 在没有codeigniter的情况下测试数据库连接,可以吗?,php,mysql,testing,codeigniter,Php,Mysql,Testing,Codeigniter,我刚刚完成了我的第一个版本的automailer,一个我已经工作了一段时间的程序。我刚写完安装程序。它的工作是从模板重写codigniter配置。我已经完成了读/写操作,但我希望能够测试用户提供的服务器凭据,而不会在错误时引发系统错误。除了mysql\u connect之外,还有什么函数可以用来测试返回true或false的连接,并且不会让codeigniter感到不适 这就是我所拥有的 function _test_connection(){ if(mysql_connect($_PO
function _test_connection(){
if(mysql_connect($_POST['host'], $_POST['username'], $_POST['password'], TRUE))
return TRUE;
else
return FALSE;
}
Codigniter不喜欢这样,并抛出一个系统错误
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: mysql_connect() [<a href='function.mysql-connect'>function.mysql-connect</a>]: Unknown MySQL server host 'x' (1)</p>
<p>Filename: controllers/install.php</p>
<p>Line Number: 57</p>
</div>
遇到一个PHP错误
严重性:警告
消息:mysql_connect()[]:未知mysql服务器主机“x”(1)
文件名:controllers/install.php
电话号码:57
我不想关闭错误报告。您可以使用来抑制PHP抛出的错误
function _test_connection(){
$db = @mysql_connect($_POST['host'], $_POST['username'], $_POST['password'], TRUE);
if($db)
return TRUE;
else
return FALSE;
}
请注意,大多数情况下使用它不是一个好主意,因为它会隐藏任何错误,甚至是关键错误
查看PHP手册中的章节了解更多信息。这不是最好的解决方案,因为它使用PHP内置的mysql connect函数。下面的方法行不通!然而,这就是codeigniter在安装应用程序时测试用户数据库输入的工作方式
$config['hostname'] = "localhost";
$config['username'] = "username";
$config['password'] = "password";
$config['database'] = "database_name";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = FALSE;
$config['cache_on'] = FALSE;
$config['cachedir'] = "";
$config['char_set'] = "utf8";
$config['dbcollat'] = "utf8_general_ci";
if($this->load->database($config)==TRUE){
return TRUE;
}else{
return FALSE;
}
您是否关闭了CI中的错误报告?我不知道CI,但它不会引发您可以捕获的异常吗?是的,它确实会引发异常,问题是CI也在捕获它。这就是它知道何时抛出错误的方式。我试图阻止它在不修改CI核心的情况下执行此操作,然后您不能捕获CI异常吗?不管怎样,看看我的答案。