그누보드 2개의 테이블 컬럼 배열 값 비교 like 검색

그누보드 2개의 테이블 컬럼 배열 값 비교 like 검색

QA

그누보드 2개의 테이블 컬럼 배열 값 비교 like 검색

답변 1

본문

                $sql1 = "select * from `g5_write_info`"; 값을 가져올 테이블 1
                $row1 = sql_query($sql1);
                
                $sql2 = "select * from `test`"; // 값을 가져올 테이블 2
                $row2= sql_query($sql2);

                $aa = $view['wr_1'];  //  현재 보고있는 게시물의 테이블1 wr_1필드 값을 가져옴

                while ($row = sql_fetch_array($row2) ) {
                    
                    $name = $row['name'];
                    $echo = $row['echo'];
                    
                    $search_array = explode(",", $row['search']);  //콤마 단위로 구분 배열.

                    
                     for ($i=0; $i<count($search_array); $i++)
                        {
                            if ($i > 0)
                            {
                                //$row = $search_array[$i].' LIKE \'%$aa%\'' ;
                                $row = $search_array[$i]."\r" ;
                            }
                            else
                            {
                                
                            }
                        }      
                     echo $row;

 

-----------------------------------------------------------------------------------------------------------

 

테이블 1의 wr_id마다 다르겠지만 wr_1 필드에는 --> 고구마 라는 문자열 형식으로 값이 들어가 있습니다.

 

테이블 2는 AUTO_INCREMENT 고유번호, name, echo, search 필드가 있으며,

테이블 2의 search 라는 필드에는 아래처럼 데이터가 들어가 있습니다.

 

id=1(AUTO_INCREMENT) ->  고구마사과바나나,고구마사과,고구마    (search필드 값)

2 -> 딸기,귤,키위

3 -> 참외파인애플,귤,고구마

4 -> 자두,귤,고구

 

현재 위 코드 while문에서 $search_array = explode(",", $row['search']);  처럼 테이블 2의 search필드 값을 explode함수를 사용해 콤마 단위로 구분 배열로 지정했습니다.

 

제가 원하는 것은 테이블 1의 wr_1 필드(고구마) 라는 값에, 테이블2의 search 필드 값들을 비교해서 같은 단어를 포함 하고 있으면 테이블2의 echo필드를 출력 하고 싶습니다.

 

테이블1 wr_1 = 고구마 라는 값이 들어가 있다면

 

테이블2 search 필드의 1,3,4 가해당 되어야 합니다. 

 

id=1(AUTO_INCREMENT) ->  고구마사과바나나,고구마사과,고구마    (search필드 값)

2 -> 딸기,귤,키위

3 -> 참외파인애플,귤,고구마

4 -> 자두,귤,고구

 

테이블 2의 explode 한 search 배열을 like '% %' 형식으로 wr_1 을 비교해야 할거 같은데 잘 모르겠네요.

 

 

 

이 질문에 댓글 쓰기 :

답변 1


$aa = $view['wr_1']; 
 
$sql = "
    select *
      from test
     where search like '%{$aa}%'
";
 
$result = sql_query($sql);
 
while ($row = sql_fetch_array($result)) {
    echo $row['name'];
    echo "/";
    echo $row['search'];
}

마르스컴퍼니님 답변 감사드립니다.

$aa = $view['wr_1'];
$sql = " select * from test where search like '%{$aa}%' ";
$result = sql_query($sql);

while ($row = sql_fetch_array($result)) {
//echo $row['search'];
$arr = explode(',',$row['search']);  //콤마로 구분 배열

foreach($arr as $index =>$value){
echo $value;  //배열값 출력
}
}

말씀해주신대로 참고하여 explode와 foreach 함수 사용해

wr_1 값은 = 고구마

배열 값 1 고구마사과바나나
배열 값 2 고구마사과
배열 값 3 고구마

위와 같은 결과 값을 얻었습니다.

실례가 안된다면 한가지만 더 물어봐도 될까요?
위 출력한 배열 값 1,2,3을 가지고 wr_1필드와 비교하되 wr_1필드에 일치하는 단어가 배열 1,2,3에 1개라도 있다면 test테이블의 $row['echo']를 출력하려고 합니다.


맞는건지 모르겠지만 아래와 같은 결과를 얻고 싶습니다.

like %고구마사과바나나% <-->
like %고구마사과% <-->
like %고구마% <--> 고구마(wr_1)  = echo $row['echo'];


$aa = $view['wr_1']; 
 
$sql = "
    select *
      from test
     where search like '%{$aa}%'
";
 
$result = sql_query($sql);
 
while ($row = sql_fetch_array($result)) {
  $arr = explode(',', $row['search']);  //콤마로 구분 배열

	foreach($arr as $index =>$value){
		if ($value == $aa) 
			echo $row['echo'];
	}
}

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