쿼리 결과 반환 문제

쿼리 결과 반환 문제

QA

쿼리 결과 반환 문제

답변 2

본문


function executeQuery($conn, $sql) {
    if (!mysqli_query($conn, $sql))
 {
        echo "에러: " . $sql . "<br>" . mysqli_error($conn);
        exit;
    }
}
 
 
 
function insertWorkTime($conn, $zzzz, $time, $ip) {
$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);
}
 
function updateWorkOutTime($conn, $id, $time) {
 
$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' ";
    executeQuery($conn, $update_sql);
}
 
 
 
$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;
$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)) {
            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; // 작업 실패
    }
}
 

 

위와 같이 돌려보면

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

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

 

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

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

 

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

 

이 질문에 댓글 쓰기 :

답변 2

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

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

 

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

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

 


<?php
// 쿼리 실행 함수 - 성공/실패 여부를 반환하도록 수정
function executeQuery($conn, $sql) {
    if (mysqli_query($conn, $sql)) {
        return true; // 쿼리 성공 시 true 반환
    } else {
        echo "에러: " . $sql . "<br>" . mysqli_error($conn);
        return false; // 쿼리 실패 시 false 반환
    }
}
// 작업 시간 삽입 함수 - 성공/실패 여부를 반환하도록 수정
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);
}
// 작업 종료 시간 업데이트 함수 - 성공/실패 여부를 반환하도록 수정
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);
}
// 메인 코드
$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;
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; // 작업 실패
    }
}
?>

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

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

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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #php ×
전체 15,826
© SIRSOFT
현재 페이지 제일 처음으로