我遇到了以下问题:
我从我的上司接管了一个由他开发的MS-SQL数据库。可悲的是,数据库的发展状况非常糟糕。
数据库已由我“转换”为MySQL并导入数据。现在问题是,有一个表“酒店”,其中有一行名为“image1,image2,image3”等,直到image24。我从表中删除它们并创建了一个名为hotel_images的新表,其中图像被分配给酒店。现在来描述我的问题:
导入的数据包含每个图像的字符串,例如“007593-20110809-145433-01”,但缺少扩展名。所有图像都放在同一个目录中(大约有4000个),只保存了字符串。
我在将数据提取到我检查file_exists然后返回不同扩展名(.BMP,.GIF,JPG等)的网站时自己已经做了一个解决方法功能,但我不喜欢这个解决方案。
我是否有可能使用图像文件夹检查单个表中的所有可用字符串,如果字符串匹配,则在表中添加适当的扩展名?它必须是
之类的东西SELECT image from hotel_images (search for value in /images/) IF MATCH ALTER TABLE hotel_images set image = this + .extension
我很感激任何建议!
编辑:我刚注意到我可以从文件夹中对文本文件进行目录列表,然后将其与表中的每个字符串进行匹配,如果匹配则替换它 - 这是一个可能的解决方案吗?
答案 0 :(得分:2)
您必须选择所有行(不带扩展名)
然后,在PHP中,预览所有图像以查找它们是否存在于文件夹中,采取其扩展名
然后使用现有文件名UPDATE行,添加扩展名...
举个例子:
$images_query = mysql_query("SELECT id, image_name from hotel_images");
while($image = mysql_fetch_array($images_query)){
if(file_exists($image["image_name"])){
//Get extension
$ext = "...";
//Then update row with new name
mysql_query("UPDATE hotel_images SET image_name = '" . $image["image_name"] . $ext ."' WHERE id = " . $image["id"]);
}
}
你在寻找类似的东西吗?
它不是经过测试的脚本,直接在SO textarea中完成;)