我创建了一个将用户添加到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()
答案 0 :(得分:3)
我认为您在此行收到致命错误:
$stat = Task::DATABASE();
任务不存在?这应该是Email::DATABASE();
。
我假设您没有显示错误,您可以尝试在脚本顶部设置以下内容:
error_reporting(E_ALL);
ini_set('display_errors', true);
这应该可以解决您的白屏错误。
<强>旁注(S)强>
答案 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;
}
//...
}