首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MySQL中存储特定文件名时,文件扩展名被条带化

在MySQL中存储特定文件名时,文件扩展名被条带化
EN

Stack Overflow用户
提问于 2009-12-09 04:25:19
回答 3查看 121关注 0票数 0

我有三个文件:

  1. moodsLogo.jpg
  2. Copy of (images').jpg
  3. Moods徽标(自定义).jpg

我有以下代码:

代码语言:javascript
运行
复制
// (..) 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看起来像这样:

代码语言:javascript
运行
复制
  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‘,它工作得很好。

调用查询之前的回显,表明$filename是正确的。

那么到底是什么让这个特定的文件名变得虚弱呢?为什么我不能在DB中存储整个文件名?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-09 04:31:49

检查您的数据库模式,查看表$table上的字段(在代码中引用为$column)是否设置为类似以下内容:

代码语言:javascript
运行
复制
column_name VARCHAR(20)

或者有可能:

代码语言:javascript
运行
复制
column_name CHAR(20)

您可能需要对表执行ALTER操作,以允许使用更长的字符串。

票数 0
EN

Stack Overflow用户

发布于 2009-12-09 04:32:45

它可能是您存储名称的字段的字段长度吗?值moods_logo_custom.jp的长度是20个字符,或者这仅仅是巧合?

票数 0
EN

Stack Overflow用户

发布于 2009-12-09 04:36:05

下面是一个SQL命令,它将扩展列的宽度以容纳更长的字符串,因为这似乎就是您遇到的问题。

代码语言:javascript
运行
复制
ALTER TABLE __table__ MODIFY COLUMN __column__ VARCHAR(128) NOT NULL DEFAULT ""

希望这对你有用!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1869606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档