PDO-соединение не возвращает ошибку, если указанный пользователь не существуетPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 PDO-соединение не возвращает ошибку, если указанный пользователь не существует

Сообщение Anonymous »

Я разрабатываю интерфейс конфигурации, в котором клиент должен указать параметры базы данных (хост, пользователь, пароль, база данных).

Код: Выделить всё

try{
$c = new PDO('mysql:host='.$_POST['database_host'].';charset=utf-8', $_POST['database_user'], $_POST['database_password']);
$c->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
$c->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_OBJ);
$c->query("USE `".$_POST['database']."`;");
}
catch(Exception $e)
{
if(strstr($e->getMessage(),"[1045] Access denied for user '".$_POST['database_user']."'@'".$_POST['database_host']."' (using password: NO)"))
{
$errors[] = "This user requires a password.";
$fields['database_password']['valid'] = false;
}
else if(strstr($e->getMessage(),"[1045] Access denied for user '".$_POST['database_user']."'@'".$_POST['database_host']."' (using password: YES)"))
{
$errors[] = "Wrong password or unexisting user.";
$fields['database_password']['valid'] = false;
$fields['database_user']['valid'] = false;
}
else echo $e->getMessage();
}
Если я ввожу существующего пользователя с неправильным паролем или без него, возникает ошибка (отображается сообщение об ошибке «Этому пользователю требуется пароль» или «Неправильный пароль или несуществующий пароль»). user".).
Но если я введу несуществующего пользователя, ошибки не будет, только предупреждение

Код: Выделить всё

Warning: PDO::query(): SQLSTATE[42000]: Syntax error or access violation: 1044 Access denied for user ''@'localhost' to database 'mediatheque' in C:\wamp\www\mediatheque3\index.php on line 425
и скрипт продолжается, я понятия не имею, как его остановить и уведомить пользователя о неправильном имени пользователя.
Как мне решить эту проблему?
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/250 ... esnt-exist
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»