当我尝试运行它时,PDO类无法返回空白页面?

时间:2011-06-14 11:44:29

标签: php mysql oop pdo

我创建了一个将用户添加到mysql数据库的电子邮件类。 然后我创建了两个方法,第一个是私有静态,所以我可以在第二个方法中访问它,这是公共静态,运行时这个类显示一个空白页? 空白页面可能是什么原因?

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('foo@bar.com');

我在PHP显示错误中遇到此错误..

调用未定义的方法PDO :: execute()

2 个答案:

答案 0 :(得分:3)

我认为您在此行收到致命错误:

$stat = Task::DATABASE();

任务不存在?这应该是Email::DATABASE();

我假设您没有显示错误,您可以尝试在脚本顶部设置以下内容:

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

这应该可以解决您的白屏错误。

<强>旁注(S)

  1. 您要在每个要添加的电子邮件上实例化新的数据库连接。
  2. 我认为类电子邮件不应该负责您的数据库连接。

答案 1 :(得分: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;
    }

    //...

}