@PantiesInTea

Почему в базе данных MySQL при загрузке картинке возвращает NULL?

Делаю простую форму регистрации с возможностью загрузки аватара. Использую redbeanphp для удобства работы с базой данных. Проблема в том что при загрузке файла на странице регистрации в базе данных в столбце picture появляется значение NULL. При этот сам файл появляться в папке с проектом без проблем.
62e2666d706f9029372636.jpeg

сам код:
<link rel="stylesheet" href="css/style.css" />
<?php
    require "db.php";

    $data = $_POST;
    if(isset($data['do_signup'])) {
        //Здесь регаем
        $errors = array();
        if(trim($data['name']) == '' ) {
            $errors[] = 'Введите имя!';
        }

        if(trim($data['surename']) == '' ) {
            $errors[] = 'Введите Фамилию!';
        }

        if(trim($data['email']) == '' ) {
            $errors[] = 'Введите email!';
        }

        if(trim($data['phone']) == '' ) {
            $errors[] = 'Введите номер телефона!';
        }

        if($data['password'] == '' ) {
            $errors[] = 'Введите пароль';
        }

        if($data['confirm'] !== $data['password'] ) {
            $errors[] = 'Пароли не совпадают';
        }

        if(R::count('users', "email = ?", array($data['email'])) > 0) {
            $errors[] = 'Этот email уже существет';
        }

        if (empty($errors)) {
            //all is good
            $user = R::dispense('users');
            $user->name = $data['name'];
            $user->surename = $data['surename'];
            $user->email = $data['email'];
            $user->phone = $data['phone'];
            $user->picture = $data['picture'];
            $user->password = password_hash($data['password'], PASSWORD_DEFAULT);
            R::store($user);
            echo '<div style="color: green;">Регистрация прошла успешно!</div><br><a href="/">Главная<a>';

            $myimg = 'uploads/'. basename($_FILES['picture']['name']);
            if (move_uploaded_file($_FILES['picture']['tmp_name'], $myimg)) {

            }

            mail($data['email'], "Спасибо за регистрацию", 'Ваш Email '.$data['email'].' '.'Ваш пароль: '.$data['password'], 'From: qwertybackqwerty@yandex.ru'); 

            
            

        } else {
            echo '<div style="color: red;">'.array_shift($errors).'</div>';
        }

    }
?>

<form enctype="multipart/form-data" action="signup.php" method="POST">
    <p>
        <p><strong>Ваше имя</strong></p>
        <input type="text" name="name" value="<?php echo @$data['name']; ?>">
    </p>
    <p>
        <p><strong>Ваша фамилия</strong></p>
        <input type="text" name="surename" value="<?php echo @$data['surename']; ?>">
    </p>
    <p>
        <p><strong>Ваша почта</strong></p>
        <input type="email" name="email" value="<?php echo @$data['email']; ?>">
    </p>
    <p>
        <p><strong>Ваш номер телефона</strong></p>
        <input type="text" name="phone" value="<?php echo @$data['phone']; ?>">
    </p>
    <p>
        <label>Аватар</label>
        <input type="file" name="picture">
    </p>
    <p>
        <p><strong>Ваш пароль</strong></p>
        <input type="password" name="password">
    </p>
    <p>
        <p><strong>Подтвердите пароль</strong></p>
        <input type="password" name="confirm">
    </p>
    <p>
        <button type="submit" name="do_signup" class="btn">Зарегистрироваться</button>
    </p>
    <p>Уже есть аккаунт? <a class="authlink" href="login.php">Авторизация</a></p>
</form>


менять тип на VARCHAR пробовал, не помогло.
62e2673133aa4808659171.jpeg
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
if (move_uploaded_file($_FILES['picture']['tmp_name'], $myimg)) {
    $user->picture = $myimg;
}
R::store($user); // сделать ниже

Поле картинки не попадает в пост, оно попадает в файлы
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Siverius
У вас на последнем скрине tinyint, а не varchar
А blob пробовали?
И вообще, вы точно уверены, что это хорошая идея, хранить картинки и на диске, и в базе одновременно?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы