fix(mysql8): MySQL 8.0 Strict Mode DATE 필드 호환성 수정
MySQL 8.0의 Strict Mode에서 DATE 컬럼에 빈 문자열('')을 허용하지 않는
문제를 해결하기 위해 여러 파일 수정
📁 수정된 파일:
- output/_request.php: DATE 필드 빈 문자열을 NULL로 변환
- output/insert_iList.php: ACIaskDate, ACIdoneDate NULL 처리
- output/_row.php: eList_screen, eList_slat 변수 추가
- output/list_document.php: DATE 비교 조건에서 != '' 제거
- output/list_document_except.php: DATE 비교 조건에서 != '' 제거
- output/list_QCsales.php: ACIdoneDate != '' 조건 제거
- account_juil/list_daily.php: dueDate != '' 조건 제거
🐛 해결된 오류:
- SQLSTATE[HY000]: General error: 1525 Incorrect DATE value: ''
- Internal Server Error (undefined variables)
🔧 변경 내용:
- 날짜 필드 입력 시 빈 문자열 → NULL 변환
- SQL WHERE 절에서 DATE != '' 비교 → IS NOT NULL 비교로 변경
- MySQL 8.0 STRICT_TRANS_TABLES, NO_ZERO_DATE 모드 호환
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -124,7 +124,7 @@ $notesReceivableSql = "SELECT
|
||||
END
|
||||
) as outstanding_balance
|
||||
FROM $tablename
|
||||
WHERE (dueDate != '0000-00-00' AND dueDate IS NOT NULL AND dueDate != '')
|
||||
WHERE (dueDate IS NOT NULL)
|
||||
AND (is_deleted IS NULL OR is_deleted = 0)
|
||||
AND bankbook = '전자어음'
|
||||
GROUP BY bill_no
|
||||
|
||||
@@ -64,9 +64,10 @@ $warranty = isset($_REQUEST['warranty']) ? $_REQUEST['warranty'] : '';
|
||||
$ordersheet = isset($_REQUEST['ordersheet']) ? $_REQUEST['ordersheet'] : '{}';
|
||||
$ordersheet_slat = isset($_REQUEST['ordersheet_slat']) ? $_REQUEST['ordersheet_slat'] : '{}';
|
||||
|
||||
$ACIregDate = isset($_REQUEST["ACIregDate"]) ? $_REQUEST["ACIregDate"] : ''; // 인정검사 관련 4가지
|
||||
$ACIaskDate = isset($_REQUEST["ACIaskDate"]) ? $_REQUEST["ACIaskDate"] : '';
|
||||
$ACIdoneDate = isset($_REQUEST["ACIdoneDate"]) ? $_REQUEST["ACIdoneDate"] : '';
|
||||
// 인정검사 관련 날짜 필드 - 빈 문자열은 NULL로 처리 (MySQL 8.0 Strict Mode 호환)
|
||||
$ACIregDate = isset($_REQUEST["ACIregDate"]) && $_REQUEST["ACIregDate"] !== '' ? $_REQUEST["ACIregDate"] : null;
|
||||
$ACIaskDate = isset($_REQUEST["ACIaskDate"]) && $_REQUEST["ACIaskDate"] !== '' ? $_REQUEST["ACIaskDate"] : null;
|
||||
$ACIdoneDate = isset($_REQUEST["ACIdoneDate"]) && $_REQUEST["ACIdoneDate"] !== '' ? $_REQUEST["ACIdoneDate"] : null;
|
||||
$ACImemo = isset($_REQUEST["ACImemo"]) ? $_REQUEST["ACImemo"] : '';
|
||||
|
||||
$iList = isset($_REQUEST['iList']) ? $_REQUEST['iList'] : '{}'; // 인정검사 자료
|
||||
|
||||
@@ -49,8 +49,10 @@ $slatlist = isset($row['slatlist']) ? $row['slatlist'] : '{}';
|
||||
$recordscreen = isset($row['recordscreen']) ? $row['recordscreen'] : '{}';
|
||||
$recordslat = isset($row['recordslat']) ? $row['recordslat'] : '{}';
|
||||
$recordbending = isset($row['recordbending']) ? $row['recordbending'] : '{}';
|
||||
$estimateList = isset($row['estimateList']) ? $row['estimateList'] : '{}';
|
||||
$estimateSlatList = isset($row['estimateSlatList']) ? $row['estimateSlatList'] : '{}';
|
||||
$estimateList = isset($row['estimateList']) ? $row['estimateList'] : '{}';
|
||||
$estimateSlatList = isset($row['estimateSlatList']) ? $row['estimateSlatList'] : '{}';
|
||||
$eList_screen = isset($row['eList_screen']) ? $row['eList_screen'] : '{}';
|
||||
$eList_slat = isset($row['eList_slat']) ? $row['eList_slat'] : '{}';
|
||||
$etcList = isset($row['etcList']) ? $row['etcList'] : '{}';
|
||||
$screen_unapprovedList = isset($row['screen_unapprovedList']) ? $row['screen_unapprovedList'] : '{}';
|
||||
$slat_unapprovedList = isset($row['slat_unapprovedList']) ? $row['slat_unapprovedList'] : '{}';
|
||||
|
||||
@@ -9,8 +9,9 @@ header("Content-Type: application/json");
|
||||
|
||||
$num = isset($_REQUEST['num']) ? $_REQUEST['num'] : '';
|
||||
$tablename = isset($_REQUEST['tablename']) ? $_REQUEST['tablename'] : 'output';
|
||||
$ACIaskDate = isset($_REQUEST['ACIaskDate']) ? $_REQUEST['ACIaskDate'] : '';
|
||||
$ACIdoneDate = isset($_REQUEST['ACIdoneDate']) ? $_REQUEST['ACIdoneDate'] : '';
|
||||
// 날짜 필드 - 빈 문자열은 NULL로 처리 (MySQL 8.0 Strict Mode 호환)
|
||||
$ACIaskDate = isset($_REQUEST['ACIaskDate']) && $_REQUEST['ACIaskDate'] !== '' ? $_REQUEST['ACIaskDate'] : null;
|
||||
$ACIdoneDate = isset($_REQUEST['ACIdoneDate']) && $_REQUEST['ACIdoneDate'] !== '' ? $_REQUEST['ACIdoneDate'] : null;
|
||||
|
||||
// JSON 데이터를 저장할 경로 설정
|
||||
$jsonFilePath = "../output/i_json/" . $num . ".json";
|
||||
|
||||
@@ -95,12 +95,12 @@ if ($separate_date == "1") {
|
||||
// 진행상태에 대한 검색
|
||||
$orderby = " ORDER BY " . $SettingDate . " DESC, num DESC"; // 내림차순 정렬
|
||||
|
||||
if ($existing_status == '전체') {
|
||||
$where = " WHERE " . $SettingDate . " BETWEEN date('$fromdate') AND date('$Transtodate') AND is_deleted = '0' AND ACIdoneDate IS NOT NULL AND ACIdoneDate != '' " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND ACIdoneDate IS NOT NULL AND ACIdoneDate != '' AND searchtag LIKE '%$search%'" . $orderby;
|
||||
} else {
|
||||
$where = " WHERE " . $SettingDate . " BETWEEN date('$fromdate') AND date('$Transtodate') AND is_deleted = '0' AND regist_state = '$existing_status' AND ACIdoneDate IS NOT NULL AND ACIdoneDate != '' " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND regist_state = '$existing_status' AND ACIdoneDate IS NOT NULL AND ACIdoneDate != '' AND searchtag LIKE '%$search%'" . $orderby;
|
||||
if ($existing_status == '전체') {
|
||||
$where = " WHERE " . $SettingDate . " IS NOT NULL AND " . $SettingDate . " >= '$fromdate' AND " . $SettingDate . " <= '$Transtodate' AND is_deleted = '0' AND ACIdoneDate IS NOT NULL " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND ACIdoneDate IS NOT NULL AND searchtag LIKE '%$search%'" . $orderby;
|
||||
} else {
|
||||
$where = " WHERE " . $SettingDate . " IS NOT NULL AND " . $SettingDate . " >= '$fromdate' AND " . $SettingDate . " <= '$Transtodate' AND is_deleted = '0' AND regist_state = '$existing_status' AND ACIdoneDate IS NOT NULL " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND regist_state = '$existing_status' AND ACIdoneDate IS NOT NULL AND searchtag LIKE '%$search%'" . $orderby;
|
||||
}
|
||||
|
||||
// 수정된 쿼리: ACIdoneDate이 존재하고 is_deleted가 0인 자료만 선택
|
||||
|
||||
@@ -72,11 +72,11 @@ $orderby = " ORDER BY num DESC"; // 내림차순 정렬
|
||||
$orderby_with_date = " ORDER BY " . $SettingDate . " DESC, num DESC"; // 날짜+번호 내림차순 정렬
|
||||
|
||||
if ($existing_status == '전체') {
|
||||
$where = " WHERE CAST(" . $SettingDate . " AS CHAR) >= '$fromdate' AND CAST(" . $SettingDate . " AS CHAR) <= '$Transtodate' AND CAST(" . $SettingDate . " AS CHAR) != '' AND CAST(" . $SettingDate . " AS CHAR) != '0000-00-00' AND is_deleted = '0' AND ACIregDate IS NOT NULL AND ACIregDate != '' AND (ACIcheck = '' or ACIcheck IS NULL) " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND ACIregDate IS NOT NULL AND ACIregDate != '' AND (ACIcheck = '' or ACIcheck IS NULL) AND searchtag LIKE '%$search%'" . $orderby;
|
||||
$where = " WHERE " . $SettingDate . " IS NOT NULL AND " . $SettingDate . " >= '$fromdate' AND " . $SettingDate . " <= '$Transtodate' AND is_deleted = '0' AND ACIregDate IS NOT NULL AND (ACIcheck = '' OR ACIcheck IS NULL) " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND ACIregDate IS NOT NULL AND (ACIcheck = '' OR ACIcheck IS NULL) AND searchtag LIKE '%$search%'" . $orderby;
|
||||
} else {
|
||||
$where = " WHERE CAST(" . $SettingDate . " AS CHAR) >= '$fromdate' AND CAST(" . $SettingDate . " AS CHAR) <= '$Transtodate' AND CAST(" . $SettingDate . " AS CHAR) != '' AND CAST(" . $SettingDate . " AS CHAR) != '0000-00-00' AND is_deleted = '0' AND regist_state = '$existing_status' AND ACIregDate IS NOT NULL AND ACIregDate != '' AND (ACIcheck = '' or ACIcheck IS NULL) " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND regist_state = '$existing_status' AND ACIregDate IS NOT NULL AND ACIregDate != '' AND (ACIcheck = '' or ACIcheck IS NULL) AND searchtag LIKE '%$search%'" . $orderby;
|
||||
$where = " WHERE " . $SettingDate . " IS NOT NULL AND " . $SettingDate . " >= '$fromdate' AND " . $SettingDate . " <= '$Transtodate' AND is_deleted = '0' AND regist_state = '$existing_status' AND ACIregDate IS NOT NULL AND (ACIcheck = '' OR ACIcheck IS NULL) " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND regist_state = '$existing_status' AND ACIregDate IS NOT NULL AND (ACIcheck = '' OR ACIcheck IS NULL) AND searchtag LIKE '%$search%'" . $orderby;
|
||||
}
|
||||
|
||||
// 수정된 쿼리: ACIregDate이 존재하고 is_deleted가 0인 자료만 선택
|
||||
|
||||
@@ -70,12 +70,12 @@ if ($separate_date == "1") {
|
||||
// 진행상태에 대한 검색
|
||||
$orderby = " ORDER BY " . $SettingDate . " DESC, num DESC"; // 내림차순 정렬
|
||||
|
||||
if ($existing_status == '전체') {
|
||||
$where = " WHERE " . $SettingDate . " BETWEEN date('$fromdate') AND date('$Transtodate') AND is_deleted = '0' AND ACIregDate IS NOT NULL AND ACIregDate != '' AND ACIcheck = '1' " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND ACIregDate IS NOT NULL AND ACIregDate != '' AND ACIcheck = '1' AND searchtag LIKE '%$search%'" . $orderby;
|
||||
} else {
|
||||
$where = " WHERE " . $SettingDate . " BETWEEN date('$fromdate') AND date('$Transtodate') AND is_deleted = '0' AND regist_state = '$existing_status' AND ACIregDate IS NOT NULL AND ACIregDate != '' AND ACIcheck = '1' " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND regist_state = '$existing_status' AND ACIregDate IS NOT NULL AND ACIregDate != '' AND ACIcheck = '1' AND searchtag LIKE '%$search%'" . $orderby;
|
||||
if ($existing_status == '전체') {
|
||||
$where = " WHERE " . $SettingDate . " IS NOT NULL AND " . $SettingDate . " >= '$fromdate' AND " . $SettingDate . " <= '$Transtodate' AND is_deleted = '0' AND ACIregDate IS NOT NULL AND ACIcheck = '1' " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND ACIregDate IS NOT NULL AND ACIcheck = '1' AND searchtag LIKE '%$search%'" . $orderby;
|
||||
} else {
|
||||
$where = " WHERE " . $SettingDate . " IS NOT NULL AND " . $SettingDate . " >= '$fromdate' AND " . $SettingDate . " <= '$Transtodate' AND is_deleted = '0' AND regist_state = '$existing_status' AND ACIregDate IS NOT NULL AND ACIcheck = '1' " . $orderby;
|
||||
$searchwhere = " WHERE is_deleted = '0' AND regist_state = '$existing_status' AND ACIregDate IS NOT NULL AND ACIcheck = '1' AND searchtag LIKE '%$search%'" . $orderby;
|
||||
}
|
||||
|
||||
// 수정된 쿼리: ACIregDate이 존재하고 is_deleted가 0인 자료만 선택
|
||||
|
||||
Reference in New Issue
Block a user