Расширение файла чередуется при сохранении определенного имени файла в MySQL.

0

У меня есть три файла:
1. moodsLogo.jpg
2. Копия (images '). Jpg
3. Логотип настроения (Custom).jpg

и у меня есть следующий код:

// (..) some code here
$fileName     = valid_filename($_FILES[ 'Filedata' ][ 'name' ]);
$bl->updateFieldValue("tableName","columnName",$fileName, $id);

function valid_filename($filename)
{
    $filename = str_replace(" ", "_", $filename);
    $pattern = "/[^[a-z0-9._-]/";
    return preg_replace($pattern, "", strtolower($filename));
} 

И SQL выглядит так:

  public function updateFieldValue($table,$column,$value, $id)
  {
    $result = parent::updateRow($table,$column, $value, $id);  
    return $result;
  }

  public function updateRow($table,$column, $value, $id)
  {
    $sql = "UPDATE $table SET $column = '$value' WHERE id = $id";
    $this->query($sql);
    return $this->query_result;    
  }

Теперь обработка файлов 1 и 2 работает нормально. В моей БД я могу увидеть полное имя файла с расширением.

Но когда я обрабатываю файл 3, имя файла сохраняется либо как moods_logo_custom.jp или moods_logo_custom.. Я даже пытался использовать 'Copy of (Custom).jpg', и он отлично работает.

Эхо перед вызовом запроса показывает, что правильное имя файла.

Итак, что же означает, что конкретное имя файла затухает? Почему я не могу хранить все имя файла в БД?

  • 0
    Это самое длинное имя, и оно обрезается ... Я бы начал смотреть на ширину поля, в котором вы его храните.
  • 0
    Как выглядит ваша схема? Возможно, что обновленное значение усекается, потому что оно длиннее, чем длина, указанная в схеме.
Теги:

3 ответа

0
Лучший ответ

Проверьте схему базы данных, чтобы узнать, установлено ли в поле $column поле (указанное в вашем коде как $column) следующее:

column_name VARCHAR(20)

Или, возможно:

column_name CHAR(20)

Возможно, вам понадобится ALTER таблица (ы), чтобы разрешить более длинные строки.

  • 0
    Бинго! Это был символ (20) :-)
0

Здесь команда SQL, которая будет расширять ширину столбца для хранения более длинных строк, потому что это, похоже, проблема, с которой вы сталкиваетесь.

ALTER TABLE __table__ MODIFY COLUMN __column__ VARCHAR(128) NOT NULL DEFAULT ""

Надеюсь, это сработает для вас!

0

Может ли быть полем поля поля, в котором вы храните имя? Значение moods_logo_custom.jp равно 20 символам или это просто совпадение?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню