PDO, ошибка при получении, если принято - PullRequest
0 голосов
/ 30 ноября 2011

Я просто пробовал этот код:

public function create_account($username, $password, $email) {
    $password = sha1($password);
    $activation_key = md5($username . $email);

    $this->STH = $this->DBH->prepare("INSERT INTO users(username, password, email, activation_key, created) VALUES(:username, :password, :email, :activation_key, :created)");
    $this->STH->bindParam(':username', $username);
    $this->STH->bindParam(':password', $password);
    $this->STH->bindParam(':email', $email);
    $this->STH->bindParam(':activation_key', $activation_key);
    $this->STH->bindParam(':created', time());
    $this->STH->execute();

    if ($this->DBH->lastInsertId()) {
        //$this->send_mail($username, $email);
        return true;
    } else {
        //Log
    }
}

Теперь это работает, действительно. Но всего минуту назад я пропустил а) оператора SQL, что привело к тому, что данные не были вставлены. Я попытался с блоком try {} catch - Но я все равно не получил никакой ошибки - Это так? Как я могу исправить этот код, чтобы правильно регистрировать ошибку PDO (если получено)

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Вы пытались перехватить ошибку, используя:

try {
    $this->STH->execute();
} catch (PDOException $pdostmtex) {
    echo('Exception encountered: '.$pdostmtex->getCode().' -> '.$pdostmtex->getMessage());
    exit;
}

и убедитесь, что ваше сообщение об ошибке включено:

Взято из http://php.net/manual/en/function.error-reporting.php и используется только как ссылка:

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);
1 голос
/ 30 ноября 2011

execute() возвращает бул - просто проверьте его.В основном вы можете использовать его так:

if ($this -> STH -> execute() === false) {
    print_r($this -> STH -> errorInfo());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...