1

私は2つのテーブルを持っています

CREATE TABLE IF NOT EXISTS `property` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
 `name` longtext NOT NULL
 PRIMARY KEY (`id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=545 ;

他のテーブルは

CREATE TABLE IF NOT EXISTS `property_images` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`property_id` bigint(44) NOT NULL,
`image` varchar(555) NOT NULL
 PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3071 ;

私のウェブサイトでは、ユーザーは新しいプロパティを保存/アップロードする必要があります。プロパティの詳細を入力し、uploadify を介して画像をアップロードします。その後、保存ボタンをクリックしてプロパティの詳細を保存します。彼らがuploadifyを介して画像をアップロードしている間、サーバー側では、プロパティの最大IDを取得し、それに1を追加(増分)して、そのプロパティIDの画像を保存します。

シンプルは物件詳細前に保存した画像です。

問題は、あるユーザーが画像をアップロードしている間に、他のユーザーが自分のプロパティを保存すると、これらの画像がそれに割り当てられるため、ほとんどの場合、異なる画像が異なるプロパティに割り当てられます。

この問題を回避するために、ここで何ができますか?

4

1 に答える 1

0

を使用する代わりに、関数を使用MAX(id) + 1する必要がありLAST_INSERT_ID()ます。

INSERT INTO property (name) VALUES ('Property1');

INSERT INTO property_images(property_id, image) VALUES 
(LAST_INSERT_ID(), '/path/to/your/image1.png'),
(LAST_INSERT_ID(), '/path/to/your/image2.png'),
(LAST_INSERT_ID(), '/path/to/your/image3.png');

これがSQLFiddleのデモです

于 2013-09-05T09:11:53.537 に答える