CREATE TABLE `members` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(65) collate utf8_unicode_ci NOT NULL,
`order` tinyint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
MySQL의
에서 회원 테이블이 그리고 사용자가 원하는 방법 멤버를 주문할 수 있도록하고 싶습니다.order
열에 주문을 저장하고 있습니다.
새 사용자를 삽입하여 목록 맨 아래에 추가하는 방법을 궁금합니다.
$db->query('insert into members VALUES (0, "new member", 0)');
$lastId = $db->lastInsertId();
$maxOrder = $db->fetchAll('select MAX(`order`) max_order FROM members');
$db->query('update members
SET
`order` = ?
WHERE
id = ?',
array(
$maxOrder[0]['max_order'] + 1,
$lastId
));
그러나 동시에 새 멤버를 추가하는 여러 사용자가있는 경우,이 같은 값을 반환합니다 MAX(order)
일어날 수있는 반면이 정말 정확하지입니다 : 이 오늘이 무슨이다.
어떻게 이러한 사례를 처리합니까?
backticks는 mysql에서 필드 이름을 피하는 방법이다. – nickf