0

私は次の問題を抱えています:

彼が開発した上司からMS-SQLデータベースを引き継ぎました。悲しいことに、データベースは開発にとって非常に悪い状態にあります。

データベースは私によってすでにMySQLに「変換」されており、データはインポートされています。ここで問題となるのは、「image1、image2、image3」などの名前の行がimage24まであるテーブル「hotels」があることです。それらをテーブルから削除し、ホテルに画像が割り当てられるhotel_imagesという新しいテーブルを作成しました。今私の問題を説明する:

インポートされたデータには、「007593-20110809-145433-01」などの各画像の文字列が含まれていましたが、拡張子がありませんでした。すべての画像は同じディレクトリ(約4000個あります)に配置され、文字列のみが保存されています。

file_existsをチェックしてさまざまな拡張子(.BMP、.GIF、JPGなど)を返すWebサイトにデータをプルするときに、すでに回避策機能を実行しましたが、このソリューションは好きではありません。

画像フォルダを使用して単一のテーブルで使用可能なすべての文字列を確認し、文字列が一致する場合はテーブルに適切な拡張子を追加する可能性はありますか?それは次のようなものでなければなりません

SELECT image from hotel_images (search for value in /images/) IF MATCH ALTER TABLE hotel_images set image = this + .extension

アドバイスをいただければ幸いです。

編集:フォルダからテキストファイルにdirリストを作成し、それをテーブル内のすべての文字列と照合し、一致する場合はそれを置き換えることができることに気づきました-それは可能な解決策ですか?

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テキストエリアで直接実行しました;)

于 2013-03-27T13:54:45.783 に答える