我終於得到了我的第一個PDO查詢工作 - 一個簡單的行數查詢。我仍在努力處理更復雜的查詢(獲取等)。在繼續之前,我需要掌握錯誤報告。PDO查詢錯誤腳本
我的目標是創建兩個PDO查詢 - 一個用於聯機使用,另一個用於最大化錯誤消息的本地查詢。至少,我想知道如果我沒有連接到我的數據庫。 PDO能告訴我,如果我連接到一個不存在的數據庫表,或者我引用了一個表字段的方式有錯誤嗎?大概我可以繼續用phpMyAdmin> SQL來做這件事,但是看起來這樣做對於一些PDO修改過的查詢不起作用。
switch(PHP_OS)
{
case 'Linux':
// (Online query)
break;
default:
// (Local query with error reporting)
break;
}
到目前爲止,我已經嘗試了兩種不同的數據庫連接方案...
// FIRST DB CONNECTION...
try {
$db = new PDO('mysql:host=HOST_NAME;dbname=DATABASENAME;charset=utf8', 'USERNAME', 'PASSWORD');
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
// SECOND DB CONNECTION...
$dsn = "mysql:host=localhost;dbname=DATABASE;charset=utf8";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'USERNAME','PASSWORD', $opt);
第一個告訴我,如果我沒有正確連接到我的數據庫,但沒有PDO的我嘗試過使用它進行試驗。我的查詢使用第二個連接($ dsn),但根本沒有錯誤報告。
總之,下面的代碼似乎適用於我的簡單行(計數)查詢,並且可以按原樣在線使用。但有人能告訴我如何增強它在本地的最大錯誤報告?
$dsn = "mysql:host=localhost;dbname=DATABASE;charset=utf8";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$pdo = new PDO($dsn,'USERNAME','PASSWORD', $opt);
$sql= "SELECT COUNT(URL) AS num FROM people
WHERE URL = :url";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':url',$MyURL,PDO::PARAM_STR);
$stmt->execute();
$Total = $stmt->fetch();
// This query works, also...
// $sql= "SELECT URL FROM people
// WHERE URL = '$MyURL'";
// $stmt = $pdo->prepare($sql);
// $stmt->execute();
// $Total = $stmt->rowCount();
switch($Total['num'])
{
case 1;
// SUCCESS! Include appropriate files.
break;
case 0;
// ERROR 404 - NOT FOUND
break;
default:
// MULTIPLE RESULTS; HANDLE AS NEEDED
break;
}