测试数据库连接而没有codeigniter抛出一个拟合,可以做到吗?

时间:2010-05-16 21:04:38

标签: php mysql testing codeigniter

我刚刚完成了我的第一个自动化程序版本,这个程序我已经工作了一段时间了。我刚刚完成编写安装程序。它的工作是从模板重写codigniter配置。我有读/写的东西工作,但我希望能够测试用户提供的服务器凭证,而无需编码器,如果他们错了就会抛出系统错误。是否有一个除mysql_connect之外的函数可以用来测试一个返回true或false的连接,并且不会使codeigniter适合?

这就是我所拥有的

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>

我不想关闭错误报告。

2 个答案:

答案 0 :(得分:2)

您可以使用@ operator来禁止PHP抛出错误。

function _test_connection(){
    $db = @mysql_connect($_POST['host'], $_POST['username'], $_POST['password'], TRUE);
    if($db)
        return TRUE;
    else
        return FALSE;
}

请注意,大部分时间使用它都不是一个好主意,因为它会隐藏任何错误甚至是关键的。

查看有关PHP手册的Error Handling and Logging部分,了解更多信息。

答案 1 :(得分:0)

这不是最好的解决方案,因为它使用了php的内置mysql连接功能。以下DOESNT工作!但是这就是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;
}