false, 'message' => 'Query parameter is required' ], JSON_UNESCAPED_UNICODE); } // Security check: only allow SELECT queries elseif (!isSelectQuery($query)) { http_response_code(400); $messages = json_encode([ 'success' => false, 'message' => 'Only SELECT queries are allowed' ], JSON_UNESCAPED_UNICODE); } else { try { // Execute the query $stmt = $pdo->query($query); // Fetch all results $results = $stmt->fetchAll(PDO::FETCH_ASSOC); // Get row count $rowCount = count($results); // Limit results to prevent memory issues $maxResults = 5000; if ($rowCount > $maxResults) { $results = array_slice($results, 0, $maxResults); $message = "Query executed successfully. Showing first $maxResults of $rowCount rows."; } else { $message = "Query executed successfully. $rowCount rows returned."; } $messages = json_encode([ 'success' => true, 'results' => $results, 'rowCount' => $rowCount, 'message' => $message ], JSON_UNESCAPED_UNICODE); } catch (PDOException $e) { http_response_code(400); $messages = json_encode([ 'success' => false, 'message' => 'Query execution failed: ' . $e->getMessage() ], JSON_UNESCAPED_UNICODE); } } } /** * Invalid or missing action */ else { http_response_code(400); $messages = json_encode([ 'success' => false, 'message' => 'Invalid or missing action parameter' ], JSON_UNESCAPED_UNICODE); } // Send results echo $messages; ?>