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

쿼리결과 반환 질문 채택완료

은빛여전사 7개월 전 조회 2,046

여러 고수님들이 도움주신대로 해봐도 도통 모르겠습니다..

오류 메세지 출력해 보면

db에 저장이 되든 안되든  쿼리실패라고 계속 나옵니다

 

그래서 계속 data3 값이 반환되고 있습니다. ㅜㅜ

 

insert 성공시    data1 값을

        실패시    data3 값을

update 성공시  date2 값을

        실패시    data3 값을

반환받고 싶습니다.

 

혹시 함수안에 

쿼리문이 여러개가 적용이 되어서..

안되는 걸까요?

 

좀 길지만 php 파일 전체 올려드립니다.

검토좀 부탁 드립니다.

 

 

 

</p>

<p><?php

$conn = mysqli_connect("localhost", "*****", "*****", "*****");

function executeQuery($conn, $sql) {

    if (mysqli_query($conn, $sql)) {

        return true; // 쿼리 성공 시 true 반환

    } else {

        echo "에러: " . $sql . "
" . mysqli_error($conn);

        return false; // 쿼리 실패 시 false 반환

    }

}</p>

<p>$ch = curl_init();

$url = '<a href="http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo';" target="_blank" rel="noopener noreferrer">http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo';</a> /*URL*/

$ss = date('Y');

$ss1 = date('m');

$queryParams = '?' . urlencode('serviceKey') . '=XOF2kmoeLs09B60ccCpdjBDu1aTUM9RQRyLfgJPxV3Z0TPmpnj1NtbwTssTQxLVHMqo3suOmDb8b%2BDat9%2FihPw%3D%3D'; 

$queryParams .= '&' . urlencode('solYear') . '=' . urlencode($ss); 

$queryParams .= '&' . urlencode('solMonth') . '=' . urlencode($ss1);</p>

<p>

curl_setopt($ch, CURLOPT_URL, $url . $queryParams);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_HEADER, FALSE);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

$response = curl_exec($ch);

curl_close($ch);</p>

<p>

$display = []; //</p>

<p>

 $xml = simplexml_load_string($response);</p>

<p>            foreach ($xml->body->items->item as $item) {

                $key = substr($item->locdate,0,4).'-'.substr($item->locdate,4,2).'-'.substr($item->locdate,6,2);

                $val = $item->dateName.'';

                $isholi = $item->isHoliday.'';</p>

<p>

                $display[] = array(

                    'date' => $key

                    , 'name' => $val

                    , 'isholi' => $isholi

                );

            }</p>

<p>$today = date('Y-m-d');

$ho = 0; // 기본값은 공휴일 아님</p>

<p>foreach ($display as $holiday) {

    if ($holiday['date'] == $today) {

        $ho = 1; //  공휴일이면 1

        break;

    }

}</p>

<p>

function insertWorkTime($conn, $zzzz, $time, $ip) {

global $ho;</p>

<p>

$today = date("Y-m-d");</p>

<p>    $result71 = mysqli_query($conn, "SELECT in1, in2, in3, in4  FROM very_work_list2 WHERE work_id='$zzzz'");

$row = mysqli_fetch_array($result71);

$data71 = $row[0];

$data72 = $row[1];

$data73 = $row[2];    

$data75 = $row[3];

    

    

    $result771 = mysqli_query($conn, "SELECT in1, in2, in3,in4  FROM very_work_list3 WHERE work_id='$zzzz'");

$row = mysqli_fetch_array($result771);

$data771 = $row[0];

$data772 = $row[1];

$data773 = $row[2];

$data774 = $row[3];</p>

<p>    

    </p>

<p>       $result81 = mysqli_query($conn, "SELECT in1, in2, in3, in4, in5, in6, in7  FROM very_work_list1 WHERE work_id='$zzzz'");

$row = mysqli_fetch_array($result81);

$data81 = $row[0]; // 월요일

$data82 = $row[1]; // 화요일 

$data83 = $row[2]; // 수요일

$data84 = $row[3]; // 목요일

$data85 = $row[4]; // 금요일

$data86 = $row[5]; // 토요일

$data87 = $row[6]; // 일요일, 공휴일    

    </p>

<p>$result61 = mysqli_query($conn, "SELECT id, ffff, work_in  FROM very_work_list WHERE work_id='$zzzz'  ");

$row = mysqli_fetch_array($result61);

$data61 = $row[0];

$data62 = $row[1];

$data63 = $row[2];    

     

     

    $check_exist_sql = "SELECT id FROM very_work_time WHERE work_total = '$zzzz' AND DATE(work_datetime) = '$today' LIMIT 1"; 

    $check_exist_result = mysqli_query($conn, $check_exist_sql);

    if (mysqli_num_rows($check_exist_result) > 0) { // 오늘 인서트가 있으면 넘어가기

        return; 

    }

    // 인서트 한적이 없으면 넣기

    

    

    if ($data62==1){  // 출퇴근 시간 일정할 때 

   $insert_sql = "INSERT INTO very_work_time (work_id, work_name, work_group, work_intime, work_outtime, work_datetime, work_ip, work_total, dddd)

                   SELECT '$data61', work_name, work_group, ('$today $data63') , '', '$time', '$ip', '$zzzz', '0' 

                   FROM very_work_list

                   WHERE work_id = '$zzzz'";

    executeQuery($conn, $insert_sql);</p>

<p>}else if ($data62==2) {  // 1조, 2조</p>

<p>

$today = date("Y-m-d");

$dow = date('w', strtotime($today)); 

$base_date = '2025-04-21'; 

$term = (strtotime($today) - strtotime($base_date)) / 86400; 

$week = floor(($dow + $term) / 7); // </p>

<p>if ($ho == '1') { // 공휴일

    $in_time = $data75;

} else { 

    switch (($week - 1) % 3) {   // 3주 순환 (0, 1, 2)

        case 0:

            $in_time = $data71;

            break;

        case 1:

            $in_time = $data72;

            break;

        case 2:

            $in_time = $data73;

            break;

    }</p>

<p>    if ($dow == 0 || $dow == 6) { // 주말

        $in_time = $data75;

    }

}</p>

<p>

 $insert_sql = "INSERT INTO very_work_time (work_id, work_name, work_group, work_intime, work_outtime, work_datetime, work_ip, work_total, dddd)

                   SELECT '$data61', work_name, work_group, ('$today $in_time') , '', '$time', '$ip', '$zzzz', '0'

 

                   FROM very_work_list

                   WHERE work_id = '$zzzz'";

    executeQuery($conn, $insert_sql);</p>

<p>        

        

        }else if ($data62==4) {  // 지원조

        

    $base_date = '2025-04-29';

$today = date('Y-m-d');

$term = (strtotime($today) - strtotime($base_date)) / 86400 + 1; // 경과 일수 계산</p>

<p>switch ($term % 4) {

    case 1:

        $in_time = $data771;

        break;

    case 2:

        $in_time = $data772;

        break;

    case 3:

        $in_time = $data773;

        break;

    case 0:

        $in_time = $data774;

        break;

}    </p>

<p>

 $insert_sql = "INSERT INTO very_work_time (work_id, work_name, work_group, work_intime, work_outtime, work_datetime, work_ip, work_total, dddd)

                   SELECT '$data61', work_name, work_group, ('$today $in_time') , '', '$time', '$ip', '$zzzz', '0'

 

                   FROM very_work_list

                   WHERE work_id = '$zzzz'";

    executeQuery($conn, $insert_sql);</p>

<p>

 </p>

<p>}else if ($data62==3 or $data62==8 or $data62==9) {  // 매일 변동</p>

<p>        

    $today = date("Y-m-d");

    $week_day = date('w', strtotime($today));</p>

<p>if ($week_day == 0  || $ho == '1') { // 일요일, 공휴일

    $in_time = $data87;

} elseif ($week_day == 1) { // 월요일

    $in_time = $data81;

} elseif ($week_day == 2) { // 화요일 

    $in_time = $data82;

} elseif ($week_day == 3) { // 수요일

    $in_time = $data83;

} elseif ($week_day == 4) { // 목요일

    $in_time = $data84;

} elseif ($week_day == 5) { // 금요일

    $in_time = $data85;

} else { // 토요일

    $in_time = $data86;

}    

        

        

     $insert_sql = "INSERT INTO very_work_time (work_id, work_name, work_group, work_intime, work_outtime, work_datetime, work_ip, work_total, dddd)

                   SELECT '$data61', work_name, work_group, ('$today $in_time') , '', '$time', '$ip', '$zzzz', '0'

 

                   FROM very_work_list

                   WHERE work_id = '$zzzz'";

    executeQuery($conn, $insert_sql);    

        </p>

<p>        

        

        </p>

<p>}</p>

<p> </p>

<p>

}</p>

<p>function updateWorkOutTime($conn, $id, $time) {

global $zzzz;

  </p>

<p>$today = date("Y-m-d");</p>

<p>

  </p>

<p>      $result21 = mysqli_query($conn, "SELECT out1, out2, out3, out4 FROM very_work_list2 WHERE work_id='$zzzz' ");

    $row = mysqli_fetch_array($result21);

    $data21 = $row[0];

    $data22 = $row[1];

    $data23 = $row[2];

    $data27 = $row[3];

    

    

          $result775 = mysqli_query($conn, "SELECT out1, out2, out3, out4 FROM very_work_list3 WHERE work_id='$zzzz' ");

    $row = mysqli_fetch_array($result775);

    $data775 = $row[0];

    $data776 = $row[1];

    $data777 = $row[2];

    $data778 = $row[3];</p>

<p>  $result91 = mysqli_query($conn, "SELECT out1, out2, out3, out4, out5, out6, out7 FROM very_work_list1 WHERE work_id='$zzzz' ");

    $row = mysqli_fetch_array($result91);

    $data91 = $row[0];

    $data92 = $row[1];

    $data93 = $row[2];

    $data94 = $row[3];

$data95 = $row[4];

$data96 = $row[5];

$data97 = $row[6];</p>

<p>    

    

     $result42 = mysqli_query($conn, "SELECT work_out, ffff  FROM very_work_list WHERE work_id='$zzzz' ");

    $row = mysqli_fetch_array($result42);

    $data42 = $row[0];

    $data43 = $row[1];

    

    

    

    </p>

<p>    $check_aa_sql = "SELECT id, work_name, work_intime, work_outtime FROM very_work_time WHERE id = '$id' ORDER BY work_datetime DESC LIMIT 1";

    $check_aa_result = mysqli_query($conn, $check_aa_sql);

    $result11 = mysqli_query($conn, "SELECT  work_intime FROM very_work_time WHERE id = '$id'");

     $row11 = mysqli_fetch_array($result11);

     $data11 = $row11[0];

 

    $datatime = ($data11);

      $time_diff = ((strtotime(date('Y-m-d H:i:s')) - strtotime($datatime)))/7200; 

      $var = floor($time_diff);</p>

<p>    

  

    

    

    

    if ($data43==1){  // 출퇴근 시간 일정할 때 

     $update_sql = "UPDATE very_work_time SET work_outtime = ('$today $data42') WHERE id = '$id' AND dddd < '$var' ";

    executeQuery($conn, $update_sql);</p>

<p>}else if ($data43==2) {  // 1조, 2조</p>

<p>$today = date('Y-m-d');

$dow = date('w', strtotime($today)); 

$base_date = '2025-04-21'; 

$term = (strtotime($today) - strtotime($base_date)) / 86400; 

$week = floor(($dow + $term) / 7); // </p>

<p>if ($ho == '1') { // 공휴일

    $out_time = $data27;

} else { 

    switch (($week - 1) % 3) {   // 3주 순환 (0, 1, 2)

        case 0:

            $out_time = $data21;

            break;

        case 1:

            $out_time = $data22;

            break;

        case 2:

            $out_time = $data23;

            break;

    }</p>

<p>    if ($dow == 0 || $dow == 6) { // 주말

        $out_time = $data27;

    }

}

        

        

        </p>

<p>$update_sql = "UPDATE very_work_time SET work_outtime = ('$today $out_time') WHERE id = '$id' AND dddd < '$var' ";

executeQuery($conn, $update_sql);</p>

<p>        </p>

<p>    }else if ($data43==4) {  // 지원조

        

    $base_date = '2025-04-29';

$today = date('Y-m-d');

$term = (strtotime($today) - strtotime($base_date)) / 86400 + 1; // 경과 일수 계산</p>

<p>switch ($term % 4) {

    case 1:

        $out_time = $data775;

        break;

    case 2:

        $out_time = $data776;

        break;

    case 3:

        $out_time = $data777;

        break;

    case 0:

        $out_time = $data778;

        break;

}    

    

    $update_sql = "UPDATE very_work_time SET work_outtime = ('$today $out_time') WHERE id = '$id' AND dddd < '$var' ";

executeQuery($conn, $update_sql);        

        </p>

<p>}else if ($data43==3 or $data43==8 or $data43==9) {  // 매일 변동

  </p>

<p>    $today = date("Y-m-d");

    $week_day = date('w', strtotime($today));</p>

<p>if ($week_day == 0  || $ho == '1') { // 일요일, 공휴일

    $out_time = $data97;

} elseif ($week_day == 1) { // 월요일

    $out_time = $data91;

} elseif ($week_day == 2) { // 화요일 

    $out_time = $data92;

} elseif ($week_day == 3) { // 수요일

    $out_time = $data93;

} elseif ($week_day == 4) { // 목요일

    $out_time = $data94;

} elseif ($week_day == 5) { // 금요일

    $out_time = $data95;

} else { // 토요일

    $out_time = $data96;

}        

        

        

    $update_sql = "UPDATE very_work_time SET work_outtime = ('$today $out_time') WHERE id = '$id' AND dddd < '$var' ";

executeQuery($conn, $update_sql);    

        

        </p>

<p>

}

    

    

    

    

}</p>

<p>$zzzz = $_GET['cccc'];

$time = date("Y-m-d H:i:s");

$today = date("Y-m-d");

$ip = $_SERVER['REMOTE_ADDR'];

$check_sql = "SELECT id, work_name, work_intime, work_outtime FROM very_work_time WHERE work_total = '$zzzz' ORDER BY work_datetime DESC LIMIT 1";

$check_result = mysqli_query($conn, $check_sql);

$result = mysqli_query($conn, "SELECT work_name FROM very_work_list WHERE work_id='$zzzz' ");

$row = mysqli_fetch_array($result);

$data = $row[0];

$data1 = 1;

$data2 = 2;

$data3 = 3;</p>

<p>

if ($check_result && mysqli_num_rows($check_result) > 0) {

    $row = mysqli_fetch_assoc($check_result);

    if (empty($row['work_outtime'])) {

        if (updateWorkOutTime($conn, $row['id'], $time)) {

            echo $data, "6", $data2; // 작업 성공

        } else {

            echo $data, "6", $data3; // 작업 실패

        }

    } else {

        if (insertWorkTime($conn, $zzzz, $time, $ip)) {

            echo $data, "6", $data1; // 작업 성공

        } else {

            echo $data, "6", $data3; // 작업 실패

        }

    }

} else {

    if (insertWorkTime($conn, $zzzz, $time, $ip)) {

        echo $data, "6", $data1; // 작업 성공

    } else {

        echo $data, "6", $data3; // 작업 실패

    }

}

?>

 </p>

<p> </p>

<p>

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

답변 1개

채택된 답변
+20 포인트
LovelyCaT
7개월 전

insertWorkTime()updateWorkOutTime() 함수에서 결과값을 제대로 반환하지 않고 있습니다.

두 함수에서 return true; 혹은 return false;를 명확히 해주셔야할 것 같습니다.

되돌려 받는게 없으면 null로 받아서 무조건 else 쪽으로 들어갈텐데

if 문 안에 말고 밖으로 빼서 뭘 return 받는지 확인해보셔야할 것 같습니다.

 

 

 

</p>

<p>function executeQuery($conn, $sql) {

    $result = mysqli_query($conn, $sql);

    if ($result === false) {

        // 쿼리 실행 자체가 실패한 경우

        error_log("SQL 에러: " . $sql . " - " . mysqli_error($conn));

        echo "에러: " . $sql . "
" . mysqli_error($conn);

        return false;

    } else {

        // INSERT, UPDATE, DELETE의 경우 영향받은 행 수 확인

        // SELECT의 경우 결과 객체 반환

        if (is_object($result)) {

            // SELECT 쿼리 결과

            return $result;

        } else {

            // 영향받은 행 수 확인 (0이어도 성공으로 간주)

            return true;

        }

    }

}</p>

<p>

 

클로드에서 질문하고 executeQuery function 수정요청했는데 바꿔서 디버깅해보세요. AI 도움도 받아보시는거 추천합니다. 꽤나 정확해요 ㅎㅎ

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

답변에 대한 댓글 1개

은빛여전사
7개월 전
해결했습니다..
함수안에 결과값 과 리턴값을 추가하니 정상 작동 됩니다..
감사합니다
AI 누님이 도와 주셧네요 ㅎㅎ

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

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

로그인