mysql 쿼리문에서 파라미터가 안들어올 때 0 13 2,697

by 함박눈 mysql 파라미터 update문 [2016.02.02 15:17:00]


제목그대로 업데이트 쿼리문을 짰는데 파라미터로 받는 값이 들어오지않아 에러가 납니다. 
foreach에서 돌고있는 $c_num이라는 변수를 받아와 where절의 조건으로 주었는데 값이 안들어오는 부분이 있는 것 같습니다. 
그 부분에서 에러가 나네요ㅠ 
그래서 if($c_num == '')  continue; 
$c_num이 공백일 경우 그냥 뛰어넘게 하려했는데 찾아보니 continue가 while이나 for문처럼 반복문에서만 쓸 수 있다고 하더라구요 
프린트 찍어보면 쿼리 전까진 매개변수가 잘들어옵니다.

$sql = "UPDATE ".CUM_COMPANY." SET
				   count_substance = $result[count_substance]
				   , count_mixture = $result[count_mixture]
				   , count_product = $result[count_product]
				   WHERE c_num = ".$c_num."
			  ";

왜 매개변수가 안들어오는지, 값이 안들어오는 매개변수를 뛰어넘고 계속 진행하는 방법은 없는지 선배님들께 조언을 구하고자 합니다.

by DeSSa [2016.02.02 15:42:19]

요청 하신 질문은 데이터베이스와는 연관이 없는 프로그래밍 관련 질문 으로 파악 됩니다.

또한, 보내주신 정보로만으로는 왜 값이 안들어 오는지 알 수 없습니다.(사용하시는 언어라던지요 언어에 따라서 문법이 달라 집니다.)

 

if 이후에 반복문이 아닌데 continue가 왜 필요한지 모르겠네요...

if($c_num != ''){ - 공백이 아닌 값이 많이 들어 올 거라 예상 될때

      쿼리 실행

}

 

*질문을 볼때 조건문(if), 반복문(for, while)의 개념에 대한 이해가 필요 할 것 같습니다.

*혹시나 해서 추가 말씀 드리면 ''은 null이 아니고 공백 또한 아닙니다.


by 함박눈 [2016.02.02 15:53:31]

답변 감사합니다:)

사용하고있는 언어는 php입니다. 위의 질문올린 부분은 foreach문 안쪽에서 continue를 써서 해결하였습니다. 지금 모델쪽에서 작업중인데 update함수에 변수값이 들어오지않아 애먹고 있습니다ㅠ;;

function get_row(){	 
			$sql = "select * from ".CUM_COMPANY_LOGIN_STAFF." AS CL
				   left join ".CUM_COMPANY." AS CC ON CL.c_num = CC.c_num
			 ";
			$query			= $this->db->query($sql);
			
			foreach($query->result_array() as $row){		
				if(!$row[c_num])		continue;						
				$this->substance_update_m($row[c_num],$row[cs_db]);	//물질 수 업데이트 									
				$result['get_row'][] = $row;
			}
			
			return $result;
		}


		function substance_update_m($c_num,$member_id){				
			$cs_db = 'cms_user_'.$member_id;						
			$sql = "SELECT COUNT(is_num) as num_value FROM ".$cs_db.".ci_substance						  
		 	 ";	
		 	 //print_R($sql);				 	 		 	 
			$db= $this->db->query($sql)->row();			
			$result[count_substance] = $db->num_value;			
			
			
			$sql = "SELECT COUNT(ic_num) as num_value FROM ".$cs_db.".ci_component					   		    	    
		 	";			 			 	
		 	$db= $this->db->query($sql)->row();			
			$result[count_mixture] = $db->num_value;
			
			
			$sql = "SELECT COUNT(ip_num) as num_value FROM ".$cs_db.".ci_product					   		        
		 	";			 	
		 	$db= $this->db->query($sql)->row();			
			$result[count_product] = $db->num_value;
							
			$sql = "UPDATE ".CUM_COMPANY." SET
				   count_substance = $result[count_substance]
				   , count_mixture = $result[count_mixture]
				   , count_product = $result[count_product]
				   WHERE c_num = ".$c_num."
			  ";
			   			  
			  $this->db->query($sql);					  			
		}

이러한 소스인데 substance_update_m()의 두번째 파라미터인 $member_id라는 값이 안들어옵니다. get_row()함수에서 프린트를 찍어보면 값이 잘 찍히는데 왜 substance_update_m()함수에는 안들어오는지 모르겠습니다


by 마농 [2016.02.02 15:59:28]

문법은 잘 모르지만

언듯 보기에도 이상하네요.

$c_num 이 문제인가 아니라 $result 부분이 문제인 듯 한데요???

$result 부분이 따옴표 안에 들어 있어서 안되는 것 아닌지?


by 함박눈 [2016.02.02 16:12:09]

답글 감사합니다

따옴표 안쪽에 들어있는 $result라면 $result[count_substance] 이부분을 말씀하시는 건가요?

그 부분은 select한 쿼리 결과를 배열로 받아왔기 때문에 그렇게 쓴것입니다. 

쿼리문을 찍어보면 값도 잘들어오구요 

아무래도 substance_update_m($c_num,$member_id)함수의 파라미터가 제대로 전달되지 않는 게 문제인 것 같습니다ㅠ 


by 겸댕2후니 [2016.02.02 16:18:13]
저도 문법은 잘 모르지만

 $sql = "UPDATE ".CUM_COMPANY." SET
                   count_substance = $result[count_substance]
                   , count_mixture = $result[count_mixture]
                   , count_product = $result[count_product]
                   WHERE c_num = ".$c_num."
              ";


위부분이  아래와 같이 바껴야하는 거 아닌가요?

 $sql = "UPDATE ".CUM_COMPANY." SET
                   count_substance = ".$result[count_substance].
                   ", count_mixture = ".$result[count_mixture].
                   ", count_product = ".$result[count_product].
                   "WHERE c_num = ".$c_num."
              ";

 


by 함박눈 [2016.02.02 16:25:15]

겸댕2후니님 답글 감사합니다

저도 정확히는 모르지만 위의 방식대로 하면 syntax error가 나더라구요 

php에서는 다 따옴표안에 넣어야 쿼리가 실행되나봐요ㅋㅠ


by 마농 [2016.02.02 16:27:39]

그럼 $c_num 도 마찬가지로 따옴표 안에 넣어야 하는 것 아닌가요?


by 신이만든짝퉁 [2016.02.02 16:34:08]
 $sql = "UPDATE ".CUM_COMPANY." SET
                   count_substance = ".$result["count_substance"].
                   ", count_mixture = ".$result["count_mixture"].
                   ", count_product = ".$result["count_product"].
                   "WHERE c_num = ".$c_num."
              ";

이렇게 한번 해보세요.


by 함박눈 [2016.02.02 16:35:48]

답글 감사합니다

저도 정확히는 모르지만 파라미터로 받는 값은 따옴표 밖으로 빼는 것 같습니다ㅎ;;


by DeSSa [2016.02.02 16:40:54]
 $this->substance_update_m($row[c_num],$row[cs_db]);  
   {
       printf(row[cs_db])
    } 
 function substance_update_m($c_num,$member_id){

     {

          printf($member_id) <- 위에는 찍히는데 이 부분에서 member_id가 안찍히시는건가요?

      }

=> c_num에는 안들어 오는데 member_id는 안들어 온다라는 부분은 member_id랑 =row[cs_db]값이 Mapping이 안되서 아닐까요?
    
   문맥상 . 이부분이 append 같은데 ".ci_substance" => " ci_substance"로 변경 해 줘야 하지 않을까요? (".ci_component" , .".ci_product" 동일)
       $sql = "SELECT COUNT(is_num) as num_value FROM ".$cs_db.".ci_substance";

       $sql = "UPDATE ".CUM_COMPANY." SET
                   count_substance = $result[count_substance]
                   , count_mixture = $result[count_mixture]
                   , count_product = $result[count_product]
                   WHERE c_num = ".$c_num.""; <- "" 이부분 빼도 되지 않나요?


by 함박눈 [2016.02.02 17:01:54]

문법상의 문제는 아닌것 같습니다. 방금 알게된건데 

foreach($query->result_array() as $row){		
				if(!$row[c_num])		continue;						
				$this->substance_update_m($row[c_num],$row[cs_db]);	//물질 수 업데이트 									
				$result['get_row'][] = $row;
			}

foreach문 안쪽에 if문이 있으면 $member_id 변수가 없다는 에러가 나고 if문이 없으면 $c_num이 없다는 에러가 나네요 이게 무슨 상황인지 당황스럽네요^^;; 


by DeSSa [2016.02.02 18:07:30]
function get_row(){ 
            $sql = "select * from ".CUM_COMPANY_LOGIN_STAFF." AS CL
                   left join ".CUM_COMPANY." AS CC ON CL.c_num = CC.c_num";
            $query = $this->db->query($sql);
            
            foreach($query->result_array() as $row){    
    if(!$row['c_num']){
    }else{
     $this->substance_update_m($row['c_num'],$row['cs_db']);  // 물질 수 업데이트
    }
            }
            
}

이렇게 한번 넣어 보시겠어요?


by 이재현 [2016.02.04 15:44:28]

스페이스 누락 같은데요??

실행시 에러는 오라클에서 에러 발생하는 것같구요

$sql = "UPDATE ".CUM_COMPANY." SET

                   count_substance = ".$result[count_substance].
                   ", count_mixture = ".$result[count_mixture].
                   ", count_product = ".$result[count_product].
                   " WHERE c_num = ".$c_num."
              ";

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입