v2.5.2
Giriş yap

udemy cms proje kayit sayfa Uncaught PDOException Hatasi

Anonim
564 defa görüntülendi

kayit yaparken boyle bir hata aldim

yardimci olursunuz

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'user_permissions' doesn't have a default value in /opt/lampp/htdocs/daa/app/classes/user.php:29 Stack trace: #0 /opt/lampp/htdocs/daa/app/classes/user.php(29): PDOStatement->execute(Array) #1 /opt/lampp/htdocs/daa/app/controller/register.php(38): User::Register(Array) #2 /opt/lampp/htdocs/daa/index.php(23): require('/opt/lampp/htdo...') #3 {main} thrown in /opt/lampp/htdocs/daa/app/classes/user.php on line 29

/ /opt/lampp/htdocs/daa/app/classes/user.php:
<?php
    <?php

class User {

    public static function Login($data)
    {

        $_SESSION['user_id'] = $data['user_id'];
        $_SESSION['user_name'] = $data['user_name'];
        $_SESSION['user_rank'] = $data['user_rank'];
        $_SESSION['user_permissions'] = $data['user_permissions'];
    }

    public static function userExist($username, $email = '@@')
    {
        global $db;
        $query = $db->prepare('SELECT * FROM users WHERE user_name = :username || user_email = :email');
        $query->execute([
            'username' => $username,
            'email' => $email
        ]);
        return $query->fetch(PDO::FETCH_ASSOC);
    }

    public static function Register($data)
    {
        global $db;
        $query = $db->prepare('INSERT INTO users SET user_name = :username, user_url = :url, user_email = :email, user_password = :password');
        return $query->execute($data);
    }

}
?>
/opt/lampp/htdocs/daa/app/controller/register.php
<?php
<?php

$meta = [
    'title' => 'Kayıt Ol'
];

if (post('submit')){

    $username = post('username');
    $email = post('email');
    $password = post('password');
    $password_again = post('password_again');

    if (!$username){
        $error = 'Lütfen kullanıcı adınızı yazın.';
    } elseif (!$email){
        $error = 'Lütfen e-posta adresinizi yazın.';
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)){
        $error = 'Lütfen geçerli bir e-posta adresi yazın.';
    } elseif (!$password || !$password_again){
        $error = 'Lütfen şifrenizi girin.';
    } elseif ($password != $password_again){
        $error = 'Girdiğiniz şifreler birbiriyle uyuşmuyor.';
    } else {

        // üye var mı kontrol et
        $row = User::userExist($username, $email);

        if ($row){
            $error = 'Bu kullanıcı adı ya da e-posta zaten kullanılıyor. Lütfen başka bir tane deneyin.';
        } else {

            // üyeyi ekle
            $result = User::Register([
                'username' => $username,
                'url' => permalink($username),
                'email' => $email,
                'password' => password_hash($password, PASSWORD_DEFAULT)
            ]);

            if ($result){
                $success = 'Üyeliğiniz başarıyla oluşturuldu, yönlendiriliyorsunuz.';
                User::Login([
                    'user_id' => $db->lastInsertId(),
                    'user_name' => $username
                ]);
                header('Refresh:2;url=' . site_url());
            } else {
                $error = 'Bir sorun oluştu, lütfen daha sonra tekrar deneyin.';
            }

        }

    }

}

require view('register');
?>
Cevap yaz
Cevaplar (2)
gangboy
1421 gün önce
<?php
if ($result){
                $success = 'Üyeliğiniz başarıyla oluşturuldu, yönlendiriliyorsunuz.';
                User::Login([
                    'user_id' => $db->lastInsertId(),
                    'user_name' => $username
                ]);
                header('Refresh:2;url=' . site_url());
            } else {
                $error = 'Bir sorun oluştu, lütfen daha sonra tekrar deneyin.';
            }
?>
isimimcokguzel2
1421 gün önce
User::Login([
    'user_id' => $db->lastInsertId(),
    'user_name' => $username
]);

Hocam Burada Eksik Parametreler Var Yani Şöyle Düşünebilirsiniz:

public static function Login($data = [
    'user_id' => $db->lastInsertId(),
    'user_name' => $username
])
{

    $_SESSION['user_id'] = $data['user_id'];
    $_SESSION['user_name'] = $data['user_name'];
    $_SESSION['user_rank'] = $data['user_rank'];
    $_SESSION['user_permissions'] = $data['user_permissions'];
}

Böyle düzelecektir.

User::Login([
    'user_id' => $db->lastInsertId(),
    'user_name' => $username,
    'user_rank' => $userrank,
    'user_permissions' => $userpermissions
]);