Передача данных в БД

Возник вопрос- не работает регистрfция пользователя. Если распечатать $_POST, то видно, что данные передаются, но в БД не попадают. Пишет- ошибка базы данных. В чем может быть дело? Заранее спасибо.

Model: ...

class User {

/**
 * Регистрация пользователя 
 * @param type $name
 * @param type $email
 * @param type $password
 * @return type
 */
public static function register($name, $email, $password)
{

    $db = Db::getConnection();

    $sql = 'INSERT INTO user (name, email, password) '
            . 'VALUES (:name, :email, :password)';

    $result = $db->prepare($sql);
    $result->bindParam(':name', $name, PDO::PARAM_STR);
    $result->bindParam(':email', $email, PDO::PARAM_STR);
    $result->bindParam(':password', $password, PDO::PARAM_STR);

    return $result->execute();
}

/**
 * Редактирование данных пользователя
 * @param string $name
 * @param string $password
 */
public static function edit($id, $name, $password)
{
    $db = Db::getConnection();

    $sql = "UPDATE user 
        SET name = :name, password = :password 
        WHERE id = :id";

    $result = $db->prepare($sql);                                  
    $result->bindParam(':id', $id, PDO::PARAM_INT);       
    $result->bindParam(':name', $name, PDO::PARAM_STR);    
    $result->bindParam(':password', $password, PDO::PARAM_STR); 
    return $result->execute();
}

/**
 * Проверяем существует ли пользователь с заданными $email и $password
 * @param string $email
 * @param string $password
 * @return mixed : ingeger user id or false
 */
public static function checkUserData($email, $password)
{
    $db = Db::getConnection();

    $sql = 'SELECT * FROM user WHERE email = :email AND password = :password';

    $result = $db->prepare($sql);
    $result->bindParam(':email', $email, PDO::PARAM_INT);
    $result->bindParam(':password', $password, PDO::PARAM_INT);
    $result->execute();

    $user = $result->fetch();
    if ($user) {
        return $user['id'];
    }

    return false;
}

/**
 * Запоминаем пользователя
 * @param string $email
 * @param string $password
 */
public static function auth($userId)
{
    $_SESSION['user'] = $userId;
}

public static function checkLogged()
{
    // Если сессия есть, вернем идентификатор пользователя
    if (isset($_SESSION['user'])) {
        return $_SESSION['user'];
    }

    header("Location: /user/login");
}

public static function isGuest()
{
    if (isset($_SESSION['user'])) {
        return false;
    }
    return true;
}

/**
 * Проверяет имя: не меньше, чем 2 символа
 */
public static function checkName($name)
{
    if (strlen($name) >= 2) {
        return true;
    }
    return false;
}

/**
 * Проверяет телефон: не меньше, чем 10 символов
 */
public static function checkPhone($phone)
{
    if (strlen($phone) >= 10) {
        return true;
    }
    return false;
}

/**
 * Проверяет имя: не меньше, чем 6 символов
 */
public static function checkPassword($password)
{
    if (strlen($password) >= 6) {
        return true;
    }
    return false;
}

/**
 * Проверяет email
 */
public static function checkEmail($email)
{
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return true;
    }
    return false;
}

public static function checkEmailExists($email)
{

    $db = Db::getConnection();

    $sql = 'SELECT COUNT(*) FROM user WHERE email = :email';

    $result = $db->prepare($sql);
    $result->bindParam(':email', $email, PDO::PARAM_STR);
    $result->execute();

    if ($result->fetchColumn())
        return true;
    return false;
}

/**
 * Returns user by id
 * @param integer $id
 */
public static function getUserById($id)
{
    if ($id) {
        $db = Db::getConnection();
        $sql = 'SELECT * FROM user WHERE id = :id';

        $result = $db->prepare($sql);
        $result->bindParam(':id', $id, PDO::PARAM_INT);

        // Указываем, что хотим получить данные в виде массива
        $result->setFetchMode(PDO::FETCH_ASSOC);
        $result->execute();


        return $result->fetch();
    }
}

}

Controller:

...

class UserController {

public function actionRegister()
{
    $name = '';
    $email = '';
    $password = '';
    $result = false;

    if (isset($_POST['submit'])) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        $password = $_POST['password'];

        $errors = false;

        if (!User::checkName($name)) {
            $errors[] = 'Имя не должно быть короче 2-х символов';
        }

        if (!User::checkEmail($email)) {
            $errors[] = 'Неправильный email';
        }

        if (!User::checkPassword($password)) {
            $errors[] = 'Пароль не должен быть короче 6-ти символов';
        }

        if (User::checkEmailExists($email)) {
            $errors[] = 'Такой email уже используется';
        }

        if ($errors == false) {
            $result = User::register($name, $email, $password);
        }

    }

    require_once(ROOT . '/views/user/register.php');

    return true;
}

public function actionLogin()
{
    $email = '';
    $password = '';

    if (isset($_POST['submit'])) {
        $email = $_POST['email'];
        $password = $_POST['password'];

        $errors = false;

        // Валидация полей
        if (!User::checkEmail($email)) {
            $errors[] = 'Неправильный email';
        }            
        if (!User::checkPassword($password)) {
            $errors[] = 'Пароль не должен быть короче 6-ти символов';
        }

        // Проверяем существует ли пользователь
        $userId = User::checkUserData($email, $password);

        if ($userId == false) {
            // Если данные неправильные - показываем ошибку
            $errors[] = 'Неправильные данные для входа на сайт';
        } else {
            // Если данные правильные, запоминаем пользователя (сессия)
            User::auth($userId);

            // Перенаправляем пользователя в закрытую часть - кабинет 
            header("Location: /cabinet/"); 
        }

    }

    require_once(ROOT . '/views/user/login.php');

    return true;
}

/**
 * Удаляем данные о пользователе из сессии
 */
public function actionLogout()
{
    session_start();
    unset($_SESSION["user"]);
    header("Location: /");
}

}

...

...


Ответы (0 шт):