쿼리 결과 반환 문제 채택완료
은빛여전사
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 포인트
마르스컴퍼니
Expert
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는 저장이 되고 처리결과값만 실패로 떴었습니다
함수 내부에 있는 변수들이라 글로벌 변수 젹용 안해줘도 잘 작동했었는데
혹시나 해서 글로번별수도 적용해서 해 봤는데... 안되는군요 ㅠㅠ
이것저것 추가해서 해 놓은 것들이 중간에서 꼬이는건지도 모르겠네요 ㅠㅠ