[英]connection to the database using PDO
我正在嘗試學習PDO
我已經將此代碼連接到數據庫了
<?php
$dbhost = "localhost";
$dbname = "testcreate";
$dbuser = "root";
$dbpass = "mysql";
if (!$db) {
throw new Exception('failed to connect to mysql')
}
try {
$db = new PDO('mysql:host='.$dbhost.';dbname='.$dbname.';charset=utf8', ''.$dbuser.'', ''.$dbpass.'');
} catch (MyFunkyException $e) {
echo "Caught exception : ", $e->getMessage();
}
?>
連接有效,但是當我嘗試出錯時,我想抓住錯誤
此錯誤彈出窗口
Fatal error: Uncaught exception 'Exception' with message 'failed to connect to mysql' in C:\Program Files (x86)\Ampps\www\test.php:8 Stack trace: #0 {main} thrown in C:\Program Files (x86)\Ampps\www\test.php on line 8
您能幫我解決錯誤還是向我展示正確的方法
問題是
try {
$db = new PDO('mysql:host='.$dbhost.';dbname='.$dbname.';charset=utf8', ''.$dbuser.'', ''.$dbpass.'');
} catch (PDOException $e) {
echo "Caught exception : ", $e->getMessage();
}
同樣,也無需打開PDO的異常來捕獲異常。 但是,如果您嘗試處理帶有異常的錯誤,則必須在建立連接后立即打開該功能。
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
問題是,你不想趕什么。
至少直到您只希望它回顯錯誤消息為止。
另外,異常與PDO語法無關。
真正的問題在這里:
} catch (MyFunkyException $e) {
MyFunkyException
是您要捕獲的異常類型的類名。
PDO不會引發MyFunkyException
異常- 文檔指出它會引發PDOException
異常。
您可以通過更改如下行來解決此問題:
} catch (PDOException $e) {
或通過捕獲所有異常,而不管類型如何,如下所示:
} catch (Exception $e) {
請嘗試使用下面的代碼
<?php
$dbhost = "localhost";
$dbname = "testcreate";
$dbuser = "root";
$dbpass = "mysql";
try {
$db = new PDO('mysql:host='.$dbhost.';dbname='.$dbname.';charset=utf8', $dbuser, $dbpass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.