prepare($sql); // MySQL의 LIMIT 절에서는 바인딩된 변수를 직접 사용할 수 없으므로 바인딩된 변수를 인라인으로 처리 $stmt->bindValue(':startRow', (int) $startRow, PDO::PARAM_INT); $stmt->bindValue(':length', (int) $length, PDO::PARAM_INT); foreach ($params as $key => &$val) { $stmt->bindParam($key, $val); } $stmt->execute(); $rowsThisPage = $stmt->fetchAll(PDO::FETCH_ASSOC); // 전체 데이터 개수 계산 $totalQuery = "SELECT FOUND_ROWS()"; $totalStmt = $pdo->query($totalQuery); $totalRows = $totalStmt->fetchColumn(); // JSON 형식으로 결과 반환 echo json_encode([ 'draw' => isset($_GET['draw']) ? intval($_GET['draw']) : 0, 'recordsTotal' => $totalRows, 'recordsFiltered' => $totalRows, 'data' => $rowsThisPage ]); } catch (PDOException $e) { echo json_encode([ 'error' => $e->getMessage() ]); } $response = [ 'draw' => isset($_GET['draw']) ? intval($_GET['draw']) : 0, 'recordsTotal' => $totalRows, 'recordsFiltered' => $totalRows, 'data' => $rowsThisPage ]; echo json_encode($response); // 디버그용: JSON 응답을 로그에 기록하거나 화면에 출력 error_log(json_encode($response)); ?>