У меня есть три файла:
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
', и он отлично работает.
Эхо перед вызовом запроса показывает, что правильное имя файла.
Итак, что же означает, что конкретное имя файла затухает? Почему я не могу хранить все имя файла в БД?
Проверьте схему базы данных, чтобы узнать, установлено ли в поле $column
поле (указанное в вашем коде как $column
) следующее:
column_name VARCHAR(20)
Или, возможно:
column_name CHAR(20)
Возможно, вам понадобится ALTER
таблица (ы), чтобы разрешить более длинные строки.
Здесь команда SQL, которая будет расширять ширину столбца для хранения более длинных строк, потому что это, похоже, проблема, с которой вы сталкиваетесь.
ALTER TABLE __table__ MODIFY COLUMN __column__ VARCHAR(128) NOT NULL DEFAULT ""
Надеюсь, это сработает для вас!
Может ли быть полем поля поля, в котором вы храните имя?
Значение moods_logo_custom.jp
равно 20 символам или это просто совпадение?