我有三个文件:
我有以下代码:
// (..) 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
‘,它工作得很好。
调用查询之前的回显,表明$filename是正确的。
那么到底是什么让这个特定的文件名变得虚弱呢?为什么我不能在DB中存储整个文件名?
发布于 2009-12-09 04:31:49
检查您的数据库模式,查看表$table
上的字段(在代码中引用为$column
)是否设置为类似以下内容:
column_name VARCHAR(20)
或者有可能:
column_name CHAR(20)
您可能需要对表执行ALTER
操作,以允许使用更长的字符串。
发布于 2009-12-09 04:32:45
它可能是您存储名称的字段的字段长度吗?值moods_logo_custom.jp
的长度是20个字符,或者这仅仅是巧合?
发布于 2009-12-09 04:36:05
下面是一个SQL命令,它将扩展列的宽度以容纳更长的字符串,因为这似乎就是您遇到的问题。
ALTER TABLE __table__ MODIFY COLUMN __column__ VARCHAR(128) NOT NULL DEFAULT ""
希望这对你有用!
https://stackoverflow.com/questions/1869606
复制相似问题