채택완료

SQL문 where에서 글자 자르기 (cut_str? substr?)

안녕하세요

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

최근게시물 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개 / 댓글 6개

채택된 답변
+20 포인트
2020-09-18 (금) 14:02:30

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

Copy
$str = cut_str($view['wr_6'], 3, '');

 

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

답변에 대한 댓글 1개

고맙습니다! 제가 찾던게 이거에요. 완벽합니다!
sql 안에다가 cut_str쓸라그랬는데 아에 안되네요 저게 맞더라구요!
2020-09-18 (금) 14:45:11
Copy
$sql = " select * from {$tmp_write_table} where .... wr_6 = '{$view['wr_6']}' ...";

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

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

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

답변에 대한 댓글 1개

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

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

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

답변에 대한 댓글 1개

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

thumb-1891357262_1600402223.2012_730x199.png

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

thumb-1891357262_1600402293.6621_730x138.png

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

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

echo $sql;

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

답변에 대한 댓글 1개

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

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

답변에 대한 댓글 1개

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

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

답변에 대한 댓글 1개

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

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