제목그대로 업데이트 쿼리문을 짰는데 파라미터로 받는 값이 들어오지않아 에러가 납니다.
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." ";
왜 매개변수가 안들어오는지, 값이 안들어오는 매개변수를 뛰어넘고 계속 진행하는 방법은 없는지 선배님들께 조언을 구하고자 합니다.
요청 하신 질문은 데이터베이스와는 연관이 없는 프로그래밍 관련 질문 으로 파악 됩니다.
또한, 보내주신 정보로만으로는 왜 값이 안들어 오는지 알 수 없습니다.(사용하시는 언어라던지요 언어에 따라서 문법이 달라 집니다.)
if 이후에 반복문이 아닌데 continue가 왜 필요한지 모르겠네요...
if($c_num != ''){ - 공백이 아닌 값이 많이 들어 올 거라 예상 될때
쿼리 실행
}
*질문을 볼때 조건문(if), 반복문(for, while)의 개념에 대한 이해가 필요 할 것 같습니다.
*혹시나 해서 추가 말씀 드리면 ''은 null이 아니고 공백 또한 아닙니다.
답변 감사합니다:)
사용하고있는 언어는 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()함수에는 안들어오는지 모르겠습니다
저도 문법은 잘 모르지만 $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." ";
$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.""; <- "" 이부분 빼도 되지 않나요?
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']); // 물질 수 업데이트 } } }
이렇게 한번 넣어 보시겠어요?