当我尝试运行PDO类不起作用时会返回空白页吗?

问题描述

| 我创建了一个电子邮件类,它将用户添加MysqL数据库中。 然后我创建了两个方法,第一个是private static,因此我可以在第二个方法中访问它,而第二个方法是public static,当运行此类时显示空白页? 空白页的原因可能是什么?
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 display Errors得到此错误调用未定义的方法PDO :: execute()     

解决方法

        您尝试直接致电
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;
    }

    //...

}
    ,        我认为您在此行收到致命错误:
$stat = Task::DATABASE();
任务不存在?这应该是
Email::DATABASE();
。 我假设您也没有显示错误,可以尝试在脚本顶部设置以下内容:
error_reporting(E_ALL);
ini_set(\'display_errors\',true);
这样可以解决白色屏幕出现明显错误。 边注 您在要添加的每封电子邮件上实例化一个新的数据库连接。 我认为电子邮件课程不应由您负责数据库连接。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...