【发布时间】:2015-11-02 18:34:32
【问题描述】:
我正在使用原始名称上传图像文件。我将文件路径等上传到数据库,每个图像在数据库中都有一个唯一的 ID。直到这里一切正常。
现在,我想为上传的图像文件提供数据库表中的唯一 ID 作为名称。 (例如,如果图像 id 为 1,我希望文件被称为 1.jpg 等等。)我无法让它工作。
我不工作的方法:
数据库表
TABLE `images`
`image_id` INT(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` INT(11) unsigned NOT NULL COMMENT 'FOREIGN KEY referencing the user_id of the user, who uploaded the images',
`image_name` VARCHAR(64) NOT NULL,
`image_path` VARCHAR(64) NOT NULL,
`image_upload_timestamp` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`image_id`);
使用原始名称(工作)将图像写入数据库的脚本:
$database = DatabaseFactory::getFactory()->getConnection();
$sql = "INSERT INTO images VALUES ('', :user_id, :image_name, :image_path, :image_upload_timestamp)";
$query = $database->prepare($sql);
$query->execute(array(':user_id' => Session::get('user_id'),
':image_name' => $file_name,
':image_path' => $file_destination,
':image_upload_timestamp' => time()));
ImageModel::renameImage($image_id);
renameImage 方法(不起作用!)
public static function renameImage($image_id)
{
$database = DatabaseFactory::getFactory()->getConnection();
$query = $database->prepare("SELECT * FROM images WHERE image_id = :image_id AND user_id = :user_id");
$query->execute(array(':image_id' => $image_id, ':user_id' => Session::get('user_id')));
$img_id = $query->fetch();
// Convert array to string
$file_name = $img_id->image_id;
$image_name = $file_name . '.jpg';
$sql = "UPDATE images SET image_name = :image_name WHERE :image_id = $image_id";
$sth = $database->prepare($sql);
$sth->execute(array(':image_name' => $image_name));
}
我对此真的很陌生,非常感谢任何帮助!非常感谢!
【问题讨论】:
-
您遇到错误了吗?
-
不,文件以原始名称上传,就像 renameImage 方法不存在一样。
标签: php mysql sql file-upload