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>
72 lines
2.4 KiB
PHP
72 lines
2.4 KiB
PHP
<?php
|
|
require_once($_SERVER['DOCUMENT_ROOT'] . "/session.php");
|
|
|
|
ini_set('display_errors', 1);
|
|
ini_set('display_startup_errors', 1);
|
|
error_reporting(E_ALL);
|
|
|
|
header("Content-Type: application/json");
|
|
|
|
$num = isset($_REQUEST['num']) ? $_REQUEST['num'] : '';
|
|
$tablename = isset($_REQUEST['tablename']) ? $_REQUEST['tablename'] : 'output';
|
|
// 날짜 필드 - 빈 문자열은 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";
|
|
|
|
if (isset($_POST['iList'])) {
|
|
$iList_jsondata = json_decode($_POST['iList'], true);
|
|
if ($iList_jsondata === null && json_last_error() !== JSON_ERROR_NONE) {
|
|
echo json_encode(['error' => 'Invalid JSON data provided.'], JSON_UNESCAPED_UNICODE);
|
|
exit;
|
|
}
|
|
|
|
// 기존 JSON 파일 삭제
|
|
if (file_exists($jsonFilePath)) {
|
|
unlink($jsonFilePath); // 기존 파일 삭제
|
|
}
|
|
|
|
// JSON 데이터를 파일에 저장
|
|
file_put_contents($jsonFilePath, json_encode($iList_jsondata, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
|
|
} else {
|
|
$iList_jsondata = null;
|
|
}
|
|
|
|
|
|
require_once($_SERVER['DOCUMENT_ROOT'] . "/lib/mydb.php");
|
|
$pdo = db_connect();
|
|
|
|
try {
|
|
$pdo->beginTransaction();
|
|
|
|
// 데이터베이스에 파일 경로를 저장
|
|
$sql = "UPDATE {$DB}.{$tablename} SET iList=?, ACIdoneDate=?, ACIaskDate=? WHERE num=? LIMIT 1";
|
|
$stmh = $pdo->prepare($sql);
|
|
|
|
$stmh->bindValue(1, $jsonFilePath, PDO::PARAM_STR); // JSON 파일 경로를 저장
|
|
$stmh->bindValue(2, $ACIdoneDate, PDO::PARAM_STR);
|
|
$stmh->bindValue(3, $ACIaskDate, PDO::PARAM_STR);
|
|
$stmh->bindValue(4, $num, PDO::PARAM_STR);
|
|
|
|
$stmh->execute();
|
|
$pdo->commit();
|
|
} catch (PDOException $Exception) {
|
|
$pdo->rollBack(); // 트랜잭션 롤백
|
|
error_log("오류: " . $Exception->getMessage());
|
|
echo json_encode(['error' => $Exception->getMessage()], JSON_UNESCAPED_UNICODE);
|
|
exit;
|
|
}
|
|
|
|
$data = [
|
|
'num' => $num,
|
|
'iList source : ' => $_POST['iList'],
|
|
'json_file' => $jsonFilePath,
|
|
'iList_jsondata' => $iList_jsondata,
|
|
'message' => 'JSON data saved to file and database updated successfully.'
|
|
];
|
|
|
|
echo json_encode($data, JSON_UNESCAPED_UNICODE);
|
|
?>
|