2016-07-29 18 views
0

我必須在某些PHP腳本中包含數據庫連接。所以我需要(),然後把我的查詢後。如果查看爲單個腳本,則相當於如下所示:將MySQL查詢放在外面是否安全嘗試{}

Try { 
$connect = new PDO("mysql:host={$DB_host};dbname={$DB_name}; charset=utf8mb4",$DB_user,$DB_pass); 
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 

Catch(PDOException $e) { 
echo $e->getMessage(); 
} 
// Then I put the queries here 

它可以工作,但我的問題是:這是否安全?我在大多數教程中看到他們將所有查詢放在了大括號Try { }之內。將查詢放在Try { }之內並將其放在後面有什麼區別?

回答

1

如果出於任何原因您的查詢失敗,程序將在執行查詢的代碼行處發生崩潰。無論出於何種原因,如果這是您希望在您的代碼中執行的行爲,則可能有理由這樣做。

沒有錯誤處理你的程序只會在拋出錯誤時破壞。所以,除非你特別需要在try catch之外進行查詢(我猜不出是什麼),那麼你將在未來爲自己製造麻煩。

0

如果在查詢期間發生異常(例如,如果由於缺少引號而無法正確執行查詢),則錯誤將不會被捕獲並且腳本的執行將暫停。

錯誤處理通常總是首選的,如果可能的話。如果在提取數據,插入數據或在查詢中只是輸入錯誤時出現問題,您應該始終有辦法通知用戶發生了錯誤(並記錄下來供您自己進一步調查。)

+0

照明評論。現在我知道我錯了。那麼,如何在沒有在每個頁面上輸入連接腳本的情況下將我的查詢放在try catch中?例如: 包含('connect.php'); $ sql =「SELECT * FROM users」; 如何將$ sql放入包含的腳本中?對不起;我還是PHP/MySQL的新手。謝謝。 – Benny64

+0

請勿將其包含在'connect.php'中。只需在你的代碼中使用你自己的try/catch塊('connect.php'之外),並相應地處理。 – FrankerZ