2013-12-22 115 views
0

我終於得到了我的第一個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; 
} 

回答

0

你不明白錯誤報告的想法。它必須始終最大化。

這是目的地不同。

在本地設置在屏幕上進行的整個PHP顯示錯誤:

ini_set('display_errors', 1); 

在一個活的服務器讓你整個PHP顯示不是一個單一的錯誤,但讓他們人登錄:

ini_set('display_errors', 0); 
ini_set('log_errors', 1); 

從上面你也可以看出,第一個PDO連接示例是絕對不可接受的,不應該被使用。