테스트 사이트 - 개발 중인 베타 버전입니다

SQL문 where에서 글자 자르기 (cut_str? substr?) 채택완료

freed 5년 전 조회 4,609

안녕하세요

간단한거같은데 잘 안되서 질문드립니다.

최근게시물 sql 인데요

<? 

중략
        $sql = " select * from {$tmp_write_table} where {$options} wr_is_comment = 0 and wr_6 ='{$view['wr_6']}' order by wr_num limit 0, {$rows} ";

중략

?>

 

 

where문의 여분필드6

wr_6 ='{$view['wr_6']}'

 

여기서 view wr_6을 앞에 한글기준 3글자만 잘라서 wr_6과 같은지 비교하라고 하고싶은데

자꾸 에러가 나네요. 혹시 정확한 수정 문구 알 수 있을까요?

이게 <? ?> php 표시때문에 더 햇갈리네요. 중간에 ?>로 종료하고 다시 <?를 열어서 써야되나 싶기도 하고 그러네요.

감사합니다.

 

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

답변 6개

채택된 답변
+20 포인트
5년 전

※ https://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=153">https://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=153

</p>

<p>$str = cut_str($view['wr_6'], 3, '');</p>

<p> </p>

<p>$sql = " 

  select * 

    from {$tmp_write_table} 

   where {$options} wr_is_comment = 0 

     and wr_6 ='{$str}' 

   order by wr_num limit 0, {$rows} 

";</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

f
freed
5년 전
고맙습니다! 제가 찾던게 이거에요. 완벽합니다!
sql 안에다가 cut_str쓸라그랬는데 아에 안되네요 저게 맞더라구요!

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

5년 전

</p>

<p>$sql = " select * from {$tmp_write_table} where .... wr_6 = '{$view['wr_6']}' ...";</p>

<p>$sql = " select * from {$tmp_write_table} where .... wr_6 = LEFT('{$view['wr_6']}', 3) ...";</p>

<p>

위에게 되면 아래것도 됩니다.

만약 아래처럼 고쳤는데 안나온다면 쿼리 결과가 없는겁니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

f
freed
5년 전
이거 자꾸 퀄리결과가 안나와서 뭐지 했는데
cut_str쓸때 그냥 숫자로 괄호 닫아버리면 ...처리가 들어가버려서
스트링 비교할때 ...때문에 결과가 안나오네요. 3. '') 이런식으로 끝내야되더라구요.
오늘 덕분에 좋은걸 알았습니다 고맙습니다.

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

새로운 페이지만들어서 작업하시는지?

혹시 common.php include 되있으신지..?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

f
freed
5년 전
넵 기존 그누보드에서 lib/latest.lib.php 내용이라서 인클루드는 되있을꺼에요

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

샤브스타

 

 

위와 같은 오류가 난다면 우선 변수 선언이 안되어서 나는 오류입니다.

 

 

 

위처럼 하면 오류는 없어집니다.

 

변수에 어떤값이 들어갔는지 확인이 필요합니다.

 

echo $sql;

 

실행 결과를 확인해보세요. 

 

 

 

 

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

f
freed
5년 전
아 저기 중간에도 echo로 변수 출력되는지 오늘 처음알았네요 나름 오래썼는데
공유 감사드립니다! 몰랐던게 그냥 cut_str로 썼더니 ...이 들어가버려서 스트링 비교에서 출력을 못하더라구요 고맙습니다

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

샤브스타

SELECT LEFT('가나다라마바사', 3)

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

f
freed
5년 전
$sql = " select * from {$tmp_write_table} where .... wr_6 = LEFT('{$view['wr_6']}', 3) order by wr_num limit

이렇게 하면 안되네요 이게 상용환경이라 테스트가 디테일하게 못해서 어렵습니다.
간단한거 같은데 문법잘못쓴거같은데 어렵네요 ㅠ

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

f
freed
5년 전
넵 저도 문법 찾아보긴 했는데
이게 lib/latest.lib.php를 고치는거다보니까 틀리면 사이트가 안나오더라구요 그래서 간단한거같은데 어려워서 문의드렸습니다.

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

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

로그인