2011-06-14 74 views
1

我創建了一個將用戶添加到mysql數據庫的電子郵件類。 然後我創建了兩個方法,第一個是私有靜態,所以我可以在公共靜態的第二個方法內訪問它,當運行這個類時顯示一個空白頁面? 什麼可能是空白頁的原因?當我嘗試運行它時,PDO類不工作返回空白頁面?

class Email { 
private static function DATABASE() { 
    $dbh = new PDO("mysql:host=localhost;dbname=emails", 'bjw123nasd4441', 'hj12j2kJKj11s'); 
    return $dbh; 
} 
public static function addemail($email) { 
    $sqldata = array('email' => $email); 
     $stat = Email::DATABASE(); 
    $stat->prepare("INSERT INTO tasklist (email) VALUES (:email)"); 
    $stat->execute($sqldata); 
    } 
} 

Email::addemail('[email protected]'); 

我得到這個錯誤用PHP顯示錯誤..

調用未定義的方法PDO ::執行()

+0

你沒有打印輸出任何東西在這裏,爲什麼會看到不是空白的東西嗎? – 2011-06-14 11:48:47

回答

3

你試着直接打電話pdo->execute(),那是行不通的。試試這個:

$stat = self::DATABASE(); 
$query = $stat->prepare("INSERT INTO tasklist (email) VALUES (:email)"); 
$query->execute($sqldata); 

,你也應該只使用一個PDO實例:

class Email { 

    private static $dbh = null; 

    private static function DATABASE() { 
     if(is_null(self::$dbh)) 
      self::$dbh = new PDO("mysql:host=localhost;dbname=emails", 'bjw123nasd4441', 'hj12j2kJKj11s'); 
     return self::$dbh; 
    } 

    //... 

} 
3

我覺得你在這條線收到致命錯誤:

$stat = Task::DATABASE(); 

任務不存在?這應該是Email::DATABASE();

我假設你是不是太出你的錯誤,你可以嘗試設置下面的腳本的頂部:

error_reporting(E_ALL); 
ini_set('display_errors', true); 

這應該可以解決你的白色屏幕與清晰的錯誤。

阿里納斯(S)

  1. 您實例上每個電子郵件要添加新的數據庫連接。
  2. 我相信一個類別的電子郵件不應該負責您的數據庫連接。
+2

或self :: DATABASE(); – 2011-06-14 11:48:43

+0

@ Ian是正確的,我認爲這可能會更好。 – 2011-06-14 11:49:27

+0

我修正了錯誤,它仍然是接縫導致錯誤?方法是否正確? – Aaron 2011-06-14 11:49:38

相關問題