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 ) ";
이렇게 하세요.
일반적인 서브쿼리로 업데이트를 진행시 위에 서브쿼리 적어주신분 내용처럼하면
오류가 나죠..
업데이트 대상을 서브쿼리로 사용하게되니... (업데이트 대상과 서브쿼리 대상이 동일)
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)
이렇게 하셔야 될듯 합니다.
$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' ";
$select ="select wr_id from g5_write_info1 where wr_is_comment=0 order by wr_hit desc limit 1 "; // 실행 시점에 wr_hit값이 가장 높은거 한건 고르기 |
17 |
|
답변을 작성하려면 로그인이 필요합니다.