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

퀴리 실행결과 리턴 문제

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

</p>

<p> </p>

<p>

<?php

$conn = mysqli_connect("localhost", "******", "*******!", "****");</p>

<p> </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 {

        if (is_object($result)) {

            return $result;

        } else {

            return true;

        }

    }

}</p>

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

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

<p>    $check_exist_sql = "SELECT id FROM very_work_time1 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; 

    }

    // 인서트 한적이 없으면 넣기</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];    </p>

<p>    $insert_sql = "INSERT INTO very_work_time1 (work_id, work_name, work_group, work_intime, work_outtime, work_datetime, work_ip, work_total, dddd)

                   SELECT '$data61', work_name, work_group, '$time', '', '$time', '$ip', '$zzzz', '0'

                   FROM very_work_list

                   WHERE work_id = '$zzzz'";

   if (executeQuery($conn, $insert_sql)) {

        echo $data1; // 작업 성공

        return true;

    } else {

        echo $data3; // 작업 실패

        return false;

    }</p>

<p>

}</p>

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

<p>    $check_aa_sql = "SELECT id, work_name, work_intime, work_outtime FROM very_work_time1 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_time1 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>     $update_sql = "UPDATE very_work_time1 SET work_outtime = '$time' WHERE id = '$id' AND dddd < '$var' ";

    if (executeQuery($conn, $update_sql)) {

        echo $data2; // 작업 성공

        return true;

    } else {

        echo $data3; // 작업 실패

        return false;

    }</p>

<p>

}</p>

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

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

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

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

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

$check_result = mysqli_query($conn, $check_sql);</p>

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

        }</p>

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

 

insert 성공시 data1

        실패시 date3

update 성공시 data2

        실패시 date3  값을 출력하게 했는데

 

다른건 제대로 작동하는데

insert 실패시 date3 이 정상적으로 출력되는데

update 실패시에는 date2가 출력되는게 문제입니다.

 

왜그런지 조언 부탁드립니다 ㅠㅠ

 

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

답변 2개

6개월 전

1. UPDATE 쿼리에 AND dddd < '$var' 조건이 붙어 있는데, 이 조건을 만족하지 않을 경우 UPDATE가 실행되지 않습니다. 2. executeQuery 함수는 쿼리가 오류 없이 실행되면 true를 반환합니다. 그러나 업데이트할 레코드가 없으면 (조건에 맞는 레코드가 없으면) 쿼리는 성공적으로 실행되었지만 아무 행도 변경되지 않은 것입니다.

 

updateWorkOutTime 함수 수정

</p>

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

    $check_aa_sql = "SELECT id, work_name, work_intime, work_outtime FROM very_work_time1 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_time1 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);

    $update_sql = "UPDATE very_work_time1 SET work_outtime = '$time' WHERE id = '$id' AND dddd < '$var' ";

    

    if (executeQuery($conn, $update_sql)) {

        // 영향을 받은 행 수 확인

        if (mysqli_affected_rows($conn) > 0) {

            echo $data2; // 작업 성공

            return true;

        } else {

            echo $data3; // 작업 실패 (조건에 맞는 행이 없음)

            return false;

        }

    } else {

        echo $data3; // SQL 오류

        return false;

    }

}</p>

<p>

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

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

6개월 전

아래의 코드를 한번 참고를 해보시겠어요..

 

 

 

function insertWorkTime($conn, $zzzz, $time, $ip, $data1, $data3) {     $today = date("Y-m-d");     $check_exist_sql = "SELECT id FROM very_work_time1 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;      }     // 인서트 한적이 없으면 넣기

    $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];              $insert_sql = "INSERT INTO very_work_time1 (work_id, work_name, work_group, work_intime, work_outtime, work_datetime, work_ip, work_total, dddd)                    SELECT '$data61', work_name, work_group, '$time', '', '$time', '$ip', '$zzzz', '0'                    FROM very_work_list                    WHERE work_id = '$zzzz'";    if (executeQuery($conn, $insert_sql)) {         echo $data1; // 작업 성공         return true;     } else {         echo $data3; // 작업 실패         return false;     } }

function updateWorkOutTime($conn, $id, $time, $data2, $data3) {     $check_aa_sql = "SELECT id, work_name, work_intime, work_outtime FROM very_work_time1 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_time1 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);     $update_sql = "UPDATE very_work_time1 SET work_outtime = '$time' WHERE id = '$id' AND dddd < '$var' ";          if (executeQuery($conn, $update_sql)) {         echo $data2; // 작업 성공         return true;     } else {         echo $data3; // 작업 실패         return false;     } }

$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_time1 WHERE work_total = '$zzzz' ORDER BY work_datetime DESC LIMIT 1"; $check_result = mysqli_query($conn, $check_sql); $data1 = 1; $data2 = 2; $data3 = 3;

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, $data2, $data3)) {             echo $data, "6",  $data2;          } else {             echo $data, "6", $data3;         }     } else {         if (insertWorkTime($conn, $zzzz, $time, $ip, $data1, $data3)) {             echo $data, "6", $data1;         } else {             echo $data, "6", $data3;         }     } } else {     if (insertWorkTime($conn, $zzzz, $time, $ip, $data1, $data3)) {         echo $data, "6", $data1;     } else {         echo $data, "6", $data3;     } } ?>

 

 

 

 

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

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

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

로그인