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

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

은빛여전사 6개월 전 조회 2,143

</p>

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

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

 {

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

        exit;

    }</p>

<p>}</p>

<p> </p>

<p> </p>

<p> </p>

<p>function insertWorkTime($conn, $zzzz, $time, $ip) {</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)</p>

<p>                   SELECT '$data61', work_name, work_group, ('$today $data63') , '', '$time', '$ip', '$zzzz', '0'</p>

<p>                   FROM very_work_list</p>

<p>                   WHERE work_id = '$zzzz'";</p>

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

<p>}</p>

<p> </p>

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

<p> </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);</p>

<p> </p>

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

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

<p>}</p>

<p> </p>

<p> </p>

<p> </p>

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

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

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

<p>$ip = $_SERVER['REMOTE_ADDR'];</p>

<p>$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);</p>

<p>$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>$data3 = 3;</p>

<p> </p>

<p> </p>

<p>if  ($check_result && mysqli_num_rows($check_result) > 0) {</p>

<p>    $row = mysqli_fetch_assoc($check_result);</p>

<p>    if (empty($row['work_outtime'])) {</p>

<p>        if (updateWorkOutTime($conn, $row['id'], $time)) {</p>

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

<p>        } else {</p>

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

<p>        }</p>

<p>    } else {</p>

<p>        if (insertWorkTime($conn, $zzzz, $time, $ip)) {</p>

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

<p>        } else {</p>

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

<p>        }</p>

<p>    }</p>

<p>} else {</p>

<p>    if (insertWorkTime($conn, $zzzz, $time, $ip)) {</p>

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

<p>    } else {</p>

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

<p>    }</p>

<p>}</p>

<p> </p>

<p>

 

위와 같이 돌려보면

db에 값은 정상적으로 저장이 되는데... $data3값을 반환합니다.

mysqli_error($conn)  로 출력해보면 쿼리 실패라고 나오네요

 

db에 값이 저장이 되는거면 쿼리성공이 나와야 하는거아난가요?

저장이 되든 저장이 안되든 쿼리실패라고 나옵니다.

 

무엇이 잘못 된건지 알려 주세요

 

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

답변 2개

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

주요 문제점은 함수들이 값을 반환하지 않고 있는데,

if 조건문에서 이 함수들의 반환값을 확인하는 것입니다.

 

$data61, $data63, $data42, $var 등은 글로벌 변수로 보이는데,

함수 안에서 사용하려면 글로벌 선언을 해주어야 됩니다.

 

</p>

<p><?php

// 쿼리 실행 함수 - 성공/실패 여부를 반환하도록 수정

function executeQuery($conn, $sql) {

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

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

    } else {

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

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

    }

}</p>

<p>// 작업 시간 삽입 함수 - 성공/실패 여부를 반환하도록 수정

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

    global $today, $data61, $data63; // 글로벌 변수 접근

    

    $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'";

    return executeQuery($conn, $insert_sql);

}</p>

<p>// 작업 종료 시간 업데이트 함수 - 성공/실패 여부를 반환하도록 수정

function updateWorkOutTime($conn, $id, $time) {

    global $today, $data42, $var; // 글로벌 변수 접근

    

    $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);

    

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

    return executeQuery($conn, $update_sql);

}</p>

<p>// 메인 코드

$zzzz = $_GET['cccc'];

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

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

$ip = $_SERVER['REMOTE_ADDR'];</p>

<p> </p>

<p>$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);</p>

<p>$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>

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

답변에 대한 댓글 1개

은빛여전사
6개월 전
알려주신대로도 해보고 다른방법으로도 해 봤었는데..
db는 저장이 되고 처리결과값만 실패로 떴었습니다
함수 내부에 있는 변수들이라 글로벌 변수 젹용 안해줘도 잘 작동했었는데

혹시나 해서 글로번별수도 적용해서 해 봤는데... 안되는군요 ㅠㅠ

이것저것 추가해서 해 놓은 것들이 중간에서 꼬이는건지도 모르겠네요 ㅠㅠ

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

e
6개월 전

</p>

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

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

        return false;

    } else {</p>

<p>        return true;</p>

<p>    }

}</p>

<p>

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

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

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

로그인