쿼리 결과 반환 문제
본문
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; // 작업 실패
}
}
?>
function executeQuery($conn, $sql) {
if (!mysqli_query($conn, $sql)) {
return false;
} else {
return true;
}
}
답변을 작성하시기 전에 로그인 해주세요.