问题描述
|
我创建了一个电子邮件类,它将用户添加到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);
这样可以解决白色屏幕出现明显错误。
边注
您在要添加的每封电子邮件上实例化一个新的数据库连接。
我认为电子邮件课程不应由您负责数据库连接。