1
我是新來的PDO,我想從一開始就這樣做 - 我要在一個網站上替換我的舊mysql_函數。PDO連接嘗試捕獲包括
有我這樣做是正確?:
我應該把連接代碼在一個try/catch並將其保存到一個文件,並將其包含在頁面的頂部。然後把這些查詢放在try/catch中。
或者:
我應該把連接代碼在一個文件中,並將其包括在查詢上面的try/catch語句的頂部?
VER1:
include('pdo.php'); // try/catch in file
try {
$stmt = $conn->prepare('SELECT * FROM myTable WHERE id = :id');
$stmt->execute(array('id' => $id));
while($row = $stmt->fetch()) {
print_r($row);
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
VER2:
try {
include('pdo.php'); // no try/catch in file
$stmt = $conn->prepare('SELECT * FROM myTable WHERE id = :id');
$stmt->execute(array('id' => $id));
while($row = $stmt->fetch()) {
print_r($row);
}
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
或者我應該把兩地的try/catch?
好,但它是安全的(意思是 - 錯誤不會顯示用戶名和密碼),只是使用try /抓住連接?查詢錯誤拋出的異常不可能顯示連接信息? – user1121487
我從來沒有看到任何錯誤顯示密碼,有時在調試模式下的密碼。最好的事情是測試(在生產時使用'error_reporting(0)') –
好的。那麼連接最好?假設你有一個有多個方法的類,每個方法都有一個sql查詢。最好是在頁面頂部包含$ username和$ password,然後在每個try/catch內部,開始: $ conn = new PDO(「mysql:host = $ host; dbname = $ dbname」, $ username,$ password); $ conn-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION); 因此,您可以啓動連接,並在每種方法中將其設置爲null。 – user1121487