我已閱讀了很多關於此的帖子,似乎沒有任何共識。我正在爲Web應用程序編寫一個開源通用安裝程序,我需要確認一個成功的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
<?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,$ DBU,$ DBP,$選擇)或死亡( '不能連接');'如果連接是不是會產生錯誤建立了 – mega6382
我很欣賞它......如果主機名是錯誤的,這隻會引發錯誤。如果用戶名,數據庫名稱或密碼錯誤,則不會引發錯誤。我想我會嘗試使用mysqli。 –
正如我在下面的答案中所述,這些答案都不包括表單驗證。爲了使這些檢查工作,必須提供主機,數據庫和用戶。如果其中一個是空白的,測試將返回一個誤報。 –