PDO Class не работает возвращает пустую страницу, когда я пытаюсь ее запустить? - PullRequest
1 голос
/ 14 июня 2011

Я создал класс электронной почты, который будет добавлять пользователей в базу данных mysql.затем я создал два метода, первый - приватный 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 ..

Вызов неопределенного метода PDO :: execute ()

Ответы [ 2 ]

3 голосов
/ 14 июня 2011

вы пытаетесь напрямую позвонить 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 голосов
/ 14 июня 2011

Я думаю, что вы получаете ФАТАЛЬНУЮ ошибку в этой строке:

$stat = Task::DATABASE();

Задача не существует? Это должно быть Email::DATABASE();.

Я предполагаю, что вы тоже не показываете свои ошибки, вы можете попытаться установить следующее в верхней части вашего скрипта:

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

Это должно исправить ваш белый экран с явной ошибкой.

Sidenote (s)

  1. Вы создаете новое соединение с базой данных в каждом письме, которое хотите добавить.
  2. Я полагаю, что класс Email не должен отвечать за соединение с вашей базой данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...