MySQL数据库& PHP - 将行与文件匹配并附加扩展名

时间:2013-03-27 13:43:40

标签: php mysql search replace

我遇到了以下问题:

我从我的上司接管了一个由他开发的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

我很感激任何建议!

编辑:我刚注意到我可以从文件夹中对文本文件进行目录列表,然后将其与表中的每个字符串进行匹配,如果匹配则替换它 - 这是一个可能的解决方案吗?

1 个答案:

答案 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中完成;)