Проблема передачи файла на базу данных

172
20 января 2019, 00:50

у меня возникла проблема и она заключается в том, что при передачи изображении на базу данных, где находится ее поле пишет слово Array - массив и ошибка не может преобразовать из массива в строка. Хотя поле в базе данных типа LongBlob и вот код:

    $user_avatars = $_FILES['inputPhotos'];
    $user_avatarName = $_FILES['inputPhotos']['name'];
    $user_avatarTmpName = basename($_FILES['inputPhotos']['tmp_name']);
    $user_avatarSizeName = $_FILES['inputPhotos']['size'];
    $user_avatarErrorName = $_FILES['inputPhotos']['error'];
    $fileExt = explode('.', $user_avatarName);
    $fileActualExt = strtolower(end($fileExt));
    $allowed = array('jpg', 'png', 'jpeg');
    if (in_array($fileActualExt, $allowed)) {
        if ($user_avatarErrorName === 0) {
            if ($user_avatarSizeName < 100000) {
                $user_avatarNameNew = "profile.".$fileActualExt;
                $file_url = 'images/'.$user_avatarNameNew;
                move_uploaded_file($user_avatarTmpName, $file_url);
            } else {
                $_SESSION['message'] = $Lang['size_error'];
            }
        }
    } else {
        $_SESSION['message'] = $Lang['image_error'];
    }

А это добавление его в базу данных, уже вторые сутки не могу понять в чем проблема?

$sql2 = "INSERT INTO about_user(id_about, work_about, information_about, url_profile, email, image_url, reg_id) VALUES ('', '$user_work', '$user_info', '$user_url', '$user_email', '$user_avatars', '')";
Answer 1

То что находится в вашей переменной $sql2 интерпритатор воспринимает как строку. Если вы попытаетесь исполнить следующий код:

<?php
$a = [];
echo "Some code... $a";

Вы как минимум получите NOTICE Array to string conversion
В вашем случае, вы пытаетесь передать в запросе переменную $user_avatars = $_FILES['inputPhotos']; , которая на самом деле является массивом. Для того что бы осуществить задуманное, вам нужно для начала считать файл в переменную, используя например ф-цию file_get_contents() , а потом уже отправлять запрос.

Правда, из контекста вашей задачи, я сильно сомневаюсь что вам действительно нужно сохранять аватар пользователя именно таким образом. Но это уже совсем другая история...

READ ALSO
Запись в БД при выборе картинки

Запись в БД при выборе картинки

На странице есть 2 картинки, если пользователь выбирает первую и нажимает кнопку, в бд должен записаться 0, если вторую, то 1, но при нажатии...

184
Некорректное отображение символов

Некорректное отображение символов

Очередной вопрос на тему кодировки UTF-8 для php и mysql, но просмотренные вопросы не привели к решению

164