0

我有以下问题:

我从我的上级那里接手了一个由他开发的 MS-SQL 数据库。可悲的是,数据库的发展状况非常糟糕。

我已经将数据库“转换”为 MySQL 并导入了数据。现在的问题是,有一个表“hotels”,其中包含名为“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

我将不胜感激任何建议!

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

4

1 回答 1

2

您必须选择所有行(不带扩展名)

然后,在 PHP 中,对所有图像进行 foreach 以查找它们是否存在于文件夹中,获取它们的扩展名

然后使用现有文件名更新行,添加扩展名...

举个例子:

$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 中进行;)

于 2013-03-27T13:54:45.783 回答