쿼리문 질문입니다 채택완료
update문에
order by 필드 limit1 을 넣어야 하는데..
구글링 해보니
SET 다음에 select 문을 써주면 된다고 해서
해주었습니다만..
</p>
<p>"UPDATE g5_write_report SET
(
SELECT wr_id FROM g5_write_report WHERE wr_is_comment = 0 AND wr_parent = '{$row['wr_parent']}' AND wr_20 = '{$board['bo_subject']}' ORDER BY wr_18 DESC LIMIT 1
) wr_15 = wr_15 + 1";</p>
<p>
mysql 문법 에러가 납니다;;
답변 3개
</p>
<p>update g5_write_report set wr_15 = wr_15+1</p>
<p> where wr_id = (</p>
<p> select wr_id</p>
<p> from g5_write_report</p>
<p> where wr_is_comment=0 and wr_parent = '{$row['wr_parent']}'</p>
<p> AND wr_20 = '{$board['bosubject']}'</p>
<p> ORDER BY wr_18 DESC LIMIT 1</p>
<p> )</p>
<p>
원하는게 이런건가요?
답변에 대한 댓글 2개
물론 이런 신고의 경우 트랜잭션에 의해 꼬일 가능성은 희박해 보이네요
댓글을 작성하려면 로그인이 필요합니다.
신고가 되면 해당 글의 wr_15 여분필드에 들어있는 값에 +1해서 update하면 끝아닌가요?
그누보드의 게시글 작성시 게시판 글수를 카운팅 하기위해서 게시판의 bo_count_write 필드에 숫자가 +1씩 쌓입니다.
bbs/write_update.php
</p>
<p>// 게시글 1 증가
sql_query("update {$g5['board_table']} set bo_count_write = bo_count_write + 1 where bo_table = '{$bo_table}'");
위와 같은 형식으로 하면 신고된 글에 +1 씩 넣으시면 되지싶네요
참고로 지금 update문에 서브쿼리로 selete 하는 방식은 아주 잘못된 방식입니다.
그렇게 사용하실 거면 차라리 update 이전에 selete를 하시고
그 값을 가지고 update문에 사용하세요 그런식의 쿼리를 구성하시면 직관적이지 않기 때문에
나중에 수정할 때 어려움을 겪습니다.
기왕이면 쿼리 한줄이 좋은게 아닙니다. 남이 보았을때 직관적으로 소스가 일관성이 있어야합니다.
한번에 처리가 안되면 2번 쿼리를 돌리는 것도 나쁘지않습니다.
답변에 대한 댓글 1개
select 후 넣어 주었습니다 ㅎ
신고 게시판이 좀 복잡한게..
게시물 신고가 되면
g5_write_report 테이블에
신고 게시물의 row 가 몽땅 들어오거든요
wr_id 값만 제외하고 몽땅 들어와서
같은 wr_parent 인데 bo_table 이 다른 경우도 있어서요.
무튼 말씀 감사드립니다!
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
신고 게시판을 만들었는데.
신고 카운팅을 하는거예요ㅎ
그래서 wr_15필드에 신고가 될때마다 같은 게시물이 있으면 +1 을 시켜서
총 몇번 신고됐는지 넣어주는 쿼리를 짜려고 했습니다.ㅎ
그래서..order by limit 1로 가장 마지막껄 가져오려고 한거구요 ㅎ
결국엔
[code]
// 기존 신고 게시물의 wr_15(신고횟수) 수를 가져옴
$sql_last = "SELECT wr_15 FROM g5_write_report WHERE wr_is_comment = 0 AND wr_parent = '{$row['wr_parent']}' AND wr_20 = '{$board['bo_subject']}'";
$row_last = sql_fetch($sql_last);
$sql_cnt = "UPDATE g5_write_report SET wr_15 = '{$row_last['wr_15']}' + 1 WHERE wr_is_comment = 0 AND wr_parent = '{$row['wr_parent']}' AND wr_20 = '{$board['bo_subject']}' AND wr_13 = '{$member['mb_id']}'";
sql_query($sql_cnt);
[/code]
이렇게 해서 하긴 했는데..
주신 소스로도 한번 해보겠습니다 ㅎ
기왕이면 쿼리 한줄이 낫죠 ㅎㅎ
감사합니다 :D