채택완료

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

2016-11-23 (수) 11:42:04 2,172

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' "; 

잘못 처리한건가요?  

 

Copy
<?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개

채택된 답변
+20 포인트
Copy
//$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[wr_id] 에 값이 들어가있다면 문제될건 없어보이는데
코드상 쿼리를 fetch 하는 부분이 없습니다.


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

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


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


답변을 작성하려면 로그인이 필요합니다.