두개의 쿼리를 실행하는데 처리되지 않는데... 잘못 처리한건가요?

두개의 쿼리를 실행하는데 처리되지 않는데... 잘못 처리한건가요?

QA

두개의 쿼리를 실행하는데 처리되지 않는데... 잘못 처리한건가요?

답변 4

본문

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

$sql="update g5_write_info1 set wr_5=1 where wr_is_comment=0 and wr_id =($select) ";


로 해보세여 subquery 는 스트링으로 처리하시면 안댈듯 


$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)  

 

이렇게 하셔야 될듯 합니다.


그리고 하시려고 하시는것처럼 하셔도 되는데
아무리봐도 쿼리실행 구문이 안보이네요..

$select[wr_id] 에 값이 들어가있다면 문제될건 없어보이는데
코드상 쿼리를 fetch 하는 부분이 없습니다.


답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 534
© SIRSOFT
현재 페이지 제일 처음으로