2013-03-27 60 views
0

我遇到了以下問題:MySQL數據庫和PHP - 與文件匹配的行和附加擴展名

我已經從我的上級接管了由他開發的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 

我將不勝感激任何意見!

編輯:它只是讓我注意到,我可以做一個dir列表到文件夾中的文本文件,然後匹配它對錶中的每個字符串,如果匹配替換它 - 是一個可能的解決方案?

回答

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的直接做到了;)

+0

當然....爲什麼地獄沒有,我一直在考慮這事。謝謝你的提示;) – Dreshar 2013-03-27 14:04:59

+0

沒問題!祝你今天愉快 – Pouki 2013-03-27 14:06:17

相關問題