두개의 쿼리를 실행하는데 처리되지 않는데... 잘못 처리한건가요?
본문
db는 정상적으로 연결되는것은 확인됨...
3.DB table 쿼리 실행 부분에
아래와 같이 쿼리 두개를 실행시키는 작업을 하는데요 echo 출력이 되지 않고, 실제 처리도 안되고..
최종적으로 실행되어야 하는 $sql 마지막 wr_id 값이 고정되지 않고,
실행하는 시점에 wr_hit값이 제일 높을 wr_id를 추출하여 특정필드(wr_5) 업데이트 하려합니다.
$select 를 실제 실행하면
mysql> select wr_id from g5_write_info1 where wr_is_comment=0 order by wr_hit desc limit 1;
+-------+
| wr_id |
+-------+
| 4 |
+-------+
1 row in set (0.00 sec)
$select 에 위에서 쿼리한 4가 입력되도록 하려는데
$sql="update g5_write_info1 set wr_5=1 where wr_is_comment=0 and wr_id ='$select' ";
잘못 처리한건가요?
<?php
// 1. 연결 : mysql_connect(호스트명, 아이디, 비밀번호)
$conn=mysql_connect('localhost', 'root', 'eoe.e2'); //db 연결부분
// 2. DB 선택 : mysql_select_db(해당 db명, $conn)
$db=mysql_select_db("test", $conn);
if($db)
echo "db 연결성공";
else
echo "db 연결 실패";
// 3. DB에 table 쿼리(query 질의).
$select ="select wr_id from g5_write_info1 where wr_is_comment=0 order by wr_hit desc limit 1 "; // 실행 시점에 wr_hit값이 가장 높은거 한건 고르기
$sql="update g5_write_info1 set wr_5=1 where wr_is_comment=0 and wr_id ='$select' "; // 실행되는 시점에 wr_5필드 업데이트
//echo "$sql";
//mysql_query($sql, $conn) db에 질의 수행.
mysql_query($sql_1st, $conn);
echo "<script> alert('$sql'); </script>"; // 수행되는 쿼리에 대한 확인목적
?>
답변 4
//$select ="select wr_id from g5_write_info1 where wr_is_comment=0 order by wr_hit desc limit 1 "; // 실행 시점에 wr_hit값이 가장 높은거 한건 고르기
$sql="
update g5_write_info1 set
wr_5=1
where wr_is_comment=0
and wr_id =(
select wr_id from g5_write_info1 where wr_is_comment=0 order by wr_hit desc limit 1
)
";
이렇게 하세요.
!-->
$select = "select wr_id from g5_write_info1 where wr_is_comment=0 order by wr_hit desc limit 1 " ; // 실행 시점에 wr_hit값이 가장 높은거 한건 고르기 |
17 |
|
$select ="select wr_id from g5_write_info1 where wr_is_comment=0 order by wr_hit desc limit 1 ";
$result = mysql_query($select, $conn);
$row = mysql_fetch_array($result);
$wr_id = $row['wr_id'];
$sql="update g5_write_info1 set wr_5=1 where wr_is_comment=0 and wr_id ='$wr_id' ";
일반적인 서브쿼리로 업데이트를 진행시 위에 서브쿼리 적어주신분 내용처럼하면
오류가 나죠..
업데이트 대상을 서브쿼리로 사용하게되니... (업데이트 대상과 서브쿼리 대상이 동일)
UPDATE g5_write_info1
SET wr_5=1
where wr_id=(select * from (SELECT wr_id from g5_write_info1 where wr_is_comment=0 order by wr_hit desc limit 1) as x)
이렇게 하셔야 될듯 합니다.