CI 묻고 답하기

제목 디비 쿼리 문제 ??
카테고리 CI 2, 3
글쓴이 람이 작성시각 2017/04/21 11:14:50
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 14748   RSS

[ 쿼리 실행 ]

//룸 날짜별 단가 기록
$room_price_sql = "SELECT * 
							FROM `ci_reserve_rooms_price` 
							WHERE `rv_code` = '".$rv_code."'
							AND `room_sdate` = '".$room_date."'
							AND `hotel_req` = ".$this->db->escape($hotel_req)."
							AND `room_no` = '".$Room_row[$x]->room_no."'
";
echo $room_price_sql."<br />";
$room_price_query = $this->db->query($room_price_sql);
if($room_price_query->num_rows()>0) {
	$room_price_res = $room_price_query->row();

	$rooms_sql = "UPDATE `ci_reserve_rooms_price` SET
						`hotel_req` = ".$this->db->escape($hotel_req).",
						`ho_req` = '".$ho_req."',
						`room_no` = '".$Room_row[$x]->room_no."',
						`bed_type` = '".$Room_row[$x]->bed_type."',
						`room_sdate` = '".$room_date."',
						`room_term1` = '".$rm_term1."',
						`room_term2` = '".$rm_term2."',
						`wonga_exch` = '".$wonga_room_exch."',
						`wonga_price` = '".$wonga_room_price."',
						`wonga_surch` = '".$wonga_room_surch."'
						WHERE `rvl_req` = '".$room_price_res->rvl_req."'
	";
	echo $rooms_sql."<br />";
	$this->db->query($rooms_sql);
} else {
	$rooms_sql = "INSERT INTO `ci_reserve_rooms_price` SET
						`rvl_req` = '".$Room_row[$x]->rvl_req."',
						`rv_code` = '".$rv_code."',
						`hotel_req` = ".$this->db->escape($hotel_req).",
						`ho_req` = '".$ho_req."',
						`room_no` = '".$Room_row[$x]->room_no."',
						`bed_type` = '".$Room_row[$x]->bed_type."',
						`room_sdate` = '".$room_date."',
						`room_term1` = '".$rm_term1."',
						`room_term2` = '".$rm_term2."',
						`wonga_exch` = '".$wonga_room_exch."',
						`wonga_price` = '".$wonga_room_price."',
						`wonga_surch` = '".$wonga_room_surch."'
	";
	echo $rooms_sql."<br />";
	$this->db->query($rooms_sql);
}

 

SELECT * FROM `ci_reserve_rooms_price` WHERE `rv_code` = 'MH-170421-0002' AND `room_sdate` = '2017-05-01' AND `hotel_req` = '1' AND `room_no` = '1'
==> 존해함 ==>
UPDATE `ci_reserve_rooms_price` SET `hotel_req` = '1', `ho_req` = '1', `room_no` = '1', `bed_type` = 'TWN', `room_sdate` = '2017-05-01', `room_term1` = '3', `room_term2` = '4', `wonga_exch` = 'CNY', `wonga_price` = '560', `wonga_surch` = '' WHERE `rvl_req` = '16'

SELECT * FROM `ci_reserve_rooms_price` WHERE `rv_code` = 'MH-170421-0002' AND `room_sdate` = '2017-05-02' AND `hotel_req` = '1' AND `room_no` = '1'
==> 존재하는데 인서트가 되고 있습니다. ==>
INSERT INTO `ci_reserve_rooms_price` SET `rvl_req` = '16', `rv_code` = 'MH-170421-0002', `hotel_req` = '1', `ho_req` = '1', `room_no` = '1', `bed_type` = 'TWN', `room_sdate` = '2017-05-02', `room_term1` = '3', `room_term2` = '4', `wonga_exch` = 'CNY', `wonga_price` = '560', `wonga_surch` = ''

SELECT * FROM `ci_reserve_rooms_price` WHERE `rv_code` = 'MH-170421-0002' AND `room_sdate` = '2017-05-03' AND `hotel_req` = '1' AND `room_no` = '1'
==> 존재하는데 인서트가 되고 있습니다. ==> INSERT INTO `ci_reserve_rooms_price` SET `rvl_req` = '16', `rv_code` = 'MH-170421-0002', `hotel_req` = '1', `ho_req` = '1', `room_no` = '1', `bed_type` = 'TWN', `room_sdate` = '2017-05-03', `room_term1` = '3', `room_term2` = '4', `wonga_exch` = 'CNY', `wonga_price` = '560', `wonga_surch` = ''

 

위 쿼리문을 실행하면 이상하게 3일자에 모두 데이타가 있어서 INSERT가 되면 안되는데 하나만 UPDATE가 되고 나머지2개가 INSERT가 되고 있는데 무슨 이유인지 알 수 없어 질문 남깁니다.

도와 주세요 ^^

태그 mysql,php
 다음글 application 상위폴더로 admin 루트를 만들... (2)
 이전글 ajax 배열 데이터 컨트롤러에서 받기 (4)

댓글

배강민 / 2017/04/21 12:25:15 / 추천 0
html이 꼬여서 화면이 깨져서 좀 수정했습니다.
변종원(웅파) / 2017/04/21 12:25:26 / 추천 0

4개의 and 조건중 하나라도 다르면 insert 되겠죠. 코드는 거짓말을 하지 않습니다. ^^

데이터 비교를 해보세요.

 

날짜가 다르네요. ㅎㅎ

/ 2017/04/21 12:31:04 / 추천 0
동시성 문제 아닐까요 ? select for ~ update 구문으로 락 걸고서 insert update 해보심이..?
어린양 / 2017/04/21 21:19:50 / 추천 0
$room_price_query->num_rows()  찍어보세요.