Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在没有codeigniter的情况下测试数据库连接,可以吗?_Php_Mysql_Testing_Codeigniter - Fatal编程技术网

Php 在没有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

我刚刚完成了我的第一个版本的automailer,一个我已经工作了一段时间的程序。我刚写完安装程序。它的工作是从模板重写codigniter配置。我已经完成了读/写操作,但我希望能够测试用户提供的服务器凭据,而不会在错误时引发系统错误。除了mysql\u 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>

遇到一个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异常吗?不管怎样,看看我的答案。