我刚刚完成了我的第一个自动化程序版本,这个程序我已经工作了一段时间了。我刚刚完成编写安装程序。它的工作是从模板重写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>
我不想关闭错误报告。
答案 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;
}