我正在使用原始名称上传图片文件。我将文件路径等上传到数据库,每个图像都在数据库中获得唯一的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));
}
我对此非常陌生,非常感谢任何帮助!非常感谢你!
答案 0 :(得分:2)
你也不需要在这个功能中休息。此功能仅更改了DB中的图像名称,而不是上传的图像名称。
public static function renameImage($image_id)
{
$database = DatabaseFactory::getFactory()->getConnection();
$file_name = $img_id->image_id;
$image_name = $image_id. '.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,
':image_id' => $img_id ));
}
答案 1 :(得分:1)
好的,您显示的代码中没有任何与文件相关的内容,假设您在其他地方进行文件上传,则只需使用http://php.net/manual/en/function.rename.php
rename($img_id->image_path.$img_id->image_path, $img_id->image_path.$image_name);
$sql = "UPDATE images SET image_name = :image_name WHERE image_id = :image_id";
$sth = $database->prepare($sql);
$sth->execute(array(':image_name' => $image_name,
':image_id' => $img_id ));