Протестируйте соединение с базой данных без подбора кода, можно ли это сделать? - PullRequest
2 голосов
/ 17 мая 2010

Я только что закончил свой первый выпуск autoiler, программы, над которой я работал некоторое время. Я только что закончил писать установщик. Его задача - переписать конфигнитор конфиги из шаблонов. У меня работает система чтения / записи, но я хотел бы иметь возможность проверить учетные данные сервера, предоставленные пользователем, без выдачи кодировщиком системной ошибки, если они ошибочны Есть ли функция, отличная от 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 ]

2 голосов
/ 17 мая 2010

Вы можете использовать оператор @ для подавления ошибки, создаваемой PHP.

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

Обратите внимание, что в большинстве случаев нецелесообразно использовать его, поскольку он будет скрывать любые ошибки, даже критические.

Ознакомьтесь с Обработка ошибок и ведение журнала разделов в руководстве по PHP, чтобы узнать больше.

0 голосов
/ 23 апреля 2011

Это не лучшее решение, так как оно использует встроенную функцию 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...