2015-03-06 2 views
2

Я создаю систему загрузки картинок в PHP & MySQL. Все работает отлично, за исключением того факта, что база данных не включает расширение $ db_file_name. Как бы то ни было, когда я повторяю переменную, она показывает расширение в строке.База данных не получает расширение файла

Также, когда я повторяю sql, он показывает расширение. Таким образом, проблема связана с MySQL.

Какая проблема может быть проблемой?


Это запрос:

$db_file_name = "123456.jpg"; 

     // Move result into database 
     $sql = "UPDATE users SET avatar='$db_file_name' WHERE email='$s_email' LIMIT 1"; 
     $query = mysqli_query($this->db, $sql); 

база данных получила номер без расширения (JPG, GIF, PNG). Тип данных столбца аватара - VARCHAR (255) со значением по умолчанию NULL.

+1

Возможно, не связанный, но: 1) Здесь есть возможность для SQL-инъекции. 2) Имена файлов не являются уникальными в этом коде, это может перезаписать файл другого пользователя без предупреждения. – David

+0

Здравствуйте, да, я знаю о потенциальной инъекции SQL, я добавлю позже. Но сейчас я просто хочу, чтобы он работал. А поскольку фотография профиля загружается пользователем в собственный каталог, не должно быть проблем с дублированием. Позже я собираюсь добавить функцию, которая очищает каталог перед тем, как поместить в него новый файл. –

+1

Можете ли вы повторить «$ sql», чтобы увидеть его значение времени выполнения? Включает ли это расширение файла? Выполняет ли тот же запрос вручную в базе данных тот же результат? – David

ответ

0

Хорошо, я нашел проблему.

Сопоставление столбца было latin1_swedish_ci. Как только я установил его в utf8_general_ci, проблема была решена.

+0

Не то чтобы это должно было иметь какое-либо значение, если только вы не используете какой-то действительно странный символ '.'. – deceze

Смежные вопросы