Я читал много сообщений об этом, и, похоже, нет никакого консенсуса. Я пишу родовой установщик с открытым исходным кодом для веб-приложений, и мне нужно подтвердить успешное соединение PDO. Он должен проверить соединение с PDO, а затем записать фактический файл config/init. Часть записи файла работает нормально, но я не могу получить конкретную проверку того, что PDO действительно подключен. Он говорит, что он связан, если форма пуста, и она говорит, что она связана, если какая-то информация в форме верна. Как получить четкое указание на правильность учетных данных pdo? Я дам вам (урезанную) версию того, что я делаю.Мне нужно подтверждение успешного подключения к PDO
Форма:
<H2>Please fill in your database credentials</H2>
<form class="form" action="" method="post">
<label for="dbh">Database Host
<input class="form-control" type="text" name="dbh" value="<?php if (!empty($_POST['dbh'])){ print $_POST['dbh']; } ?>"></label><br><br>
<label for="dbu">Database User
<input class="form-control" type="text" name="dbu" value="<?php if (!empty($_POST['dbu'])){ print $_POST['dbu']; } ?>"></label><br><br>
<label for="dbp">Database Password
<input class="form-control" type="text" name="dbp" value="<?php if (!empty($_POST['dbp'])){ print $_POST['dbp']; } ?>"></label><br><br>
<label for="dbn">Database Name
<input class="form-control" type="text" name="dbn" value="<?php if (!empty($_POST['dbn'])){ print $_POST['dbn']; } ?>"></label><br><br>
РНР
<?php
if (!empty($_POST)) {
$dbh=$_POST['dbh']; //db host
$dbu=$_POST['dbu']; //db username
$dbp=$_POST['dbp']; //db password
$dbn=$_POST['dbn']; //database name
//If Testing
if (!empty($_POST['test'])) {
$dsn = "mysql:host=$dbh;dbname=$dbn;charset=utf8";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn, $dbu, $dbp, $opt);
}
//todo: If Submitted, a bunch more logic here
}
?>
'$ PDO = новый PDO ($ DSN, $ ДБУ, $ DBP, $ OPT) или умереть ('не удалось подключиться');' Он будет генерировать ошибку, если соединение не является установленное – mega6382
Я ценю это ... это только выдает ошибку, если имя хоста неверно. Если имя пользователя, имя db или пароль неверны, это не вызывает ошибки. Я думаю, что я собираюсь попробовать mysqli. –
Как я сказал в ответе ниже, ни один из этих ответов не включает проверку формы. Чтобы эти проверки работали, необходимо предоставить хост, базу данных и пользователя. Если один из них пуст, тест вернется с ложным положительным результатом. –