diff --git a/q.php b/q.php
index 9b934c3..92759ed 100644
--- a/q.php
+++ b/q.php
@@ -45,142 +45,139 @@
}
?>
-
Execute Query
-
+Execute Query
+
+
- Available Queries
-
+
+Available Queries
+
+';
+ echo 'Select a query... ';
+ foreach ($queries as $line) {
+ list($label, $query) = explode('|', $line, 2);
+ echo '' . htmlspecialchars($label) . ' ';
+ }
+ echo '';
+} else {
+ echo "{$file} file not found.
";
+}
+?>
+
+
+getConnection();
+
+ if ($conn->connect_error) {
+ die("Connection failed: " . $conn->connect_error);
+ }
+
+ $query = $_POST['query'] ?? '';
+ $as_csv = !empty($_POST['csv_output']);
+
+ // Helper: CSV line builder (RFC 4180 style quoting)
+ $csv_line = function(array $vals): string {
+ $out = [];
+ foreach ($vals as $v) {
+ if ($v === null) {
+ $out[] = '';
+ continue;
}
-
- } */
-
- // Open the queries.txt file and read each line
- /*if (file_exists($file)) {
- $queries = file($file, FILE_IGNORE_NEW_LINES); // Read lines into an array
- foreach ($queries as $query) {
- // Create a link for each query in the file
- echo '' . htmlspecialchars($query) . ' ';
+ $s = (string)$v;
+ // Normalize line breaks
+ $s = str_replace(["\r\n", "\r"], "\n", $s);
+ // Escape double quotes by doubling them
+ if (strpbrk($s, ",\"\n") !== false) {
+ $s = '"' . str_replace('"', '""', $s) . '"';
}
+ $out[] = $s;
+ }
+ return implode(',', $out);
+ };
+
+ // Split on semicolons (simple splitter; won’t handle semicolons inside strings)
+ $queries = array_filter(array_map('trim', explode(';', $query)));
+
+ foreach ($queries as $sql) {
+ if ($sql === '') { continue; }
+
+ echo "" . htmlspecialchars($sql) . "
";
+
+ $result = $conn->query($sql);
+
+ if ($result === FALSE) {
+ echo "Error: " . htmlspecialchars($conn->error) . "
";
+ } elseif ($result === TRUE) {
+ echo "Query executed successfully.
";
} else {
- echo "{$file} file not found.
";
- }
- */
-
-
- if (file_exists($file)) {
- $queries = file($file, FILE_IGNORE_NEW_LINES); // Read lines into an array
- echo '';
- echo 'Select a query... '; // Default placeholder option
-
- foreach ($queries as $line) {
- list($label, $query) = explode('|', $line, 2); // Split label and query
- echo '' . htmlspecialchars($label) . ' ';
- }
-
- echo ' ';
- } else {
- echo "{$file} file not found.
";
- }
-
-
-
-
-
- ?>
-
+ // SELECT-like result
+ if ($as_csv) {
+ // Build header
+ $fields = $result->fetch_fields();
+ $headers = array_map(fn($f) => $f->name, $fields);
+ $csv = [];
+ $csv[] = $csv_line($headers);
+ // Rows
+ while ($row = $result->fetch_assoc()) {
+ // Preserve column order per $headers
+ $vals = [];
+ foreach ($headers as $h) { $vals[] = $row[$h]; }
+ $csv[] = $csv_line($vals);
+ }
- getConnection();
+ $csv_text = implode("\n", $csv) . "\n";
- // Check connection
- if ($conn->connect_error) {
- die("Connection failed: " . $conn->connect_error);
- }
+ // Show in a textarea for easy copy without HTML escaping issues
+ // Adjust rows/cols as you like
+ $rows = min(40, max(10, count($csv) + 2));
+ echo ''
+ . htmlspecialchars($csv_text)
+ . ' ';
+ } else {
+ // HTML table
+ echo "";
+ $fields = $result->fetch_fields();
+ foreach ($fields as $field) {
+ echo "" . htmlspecialchars($field->name) . " ";
+ }
+ echo " ";
- $query = $_POST['query']; // Get the query from the text area
-
- // Split the query if multiple queries are entered
- $queries = explode(';', $query);
-
- // Process each query
- foreach ($queries as $sql) {
- $sql = trim($sql); // Remove extra spaces
-
- echo $sql;
- echo "\n";
- if ($sql) {
- $result = $conn->query($sql);
-
- print_r($result);
-
-
-
- if ($result === FALSE) {
- echo "
Error: " . $conn->error . "
";
- } elseif ($result === TRUE) {
- echo "Query executed successfully.
";
- } else {
- // If it's a SELECT query, display results in a table
- echo "";
- // Display table headers
- $fields = $result->fetch_fields();
- foreach ($fields as $field) {
- echo "" . $field->name . " ";
+ while ($row = $result->fetch_assoc()) {
+ echo " ";
+ foreach ($row as $value) {
+ echo "" . htmlspecialchars((string)$value) . " ";
}
echo " ";
-
- // Display rows
- while ($row = $result->fetch_assoc()) {
- echo "";
- foreach ($row as $value) {
- //echo "" . htmlspecialchars($value) . " ";
- echo "" . $value . " ";
- }
- echo " ";
- }
- echo "
";
}
+ echo "
";
}
}
-
- /*
- // Now let's append the query to queries.txt if it's not already there
- $queries = file($file, FILE_IGNORE_NEW_LINES); // Read the existing queries into an array
- if (!in_array($query, $queries)) {
- $queries[] = $query; // Add the new query to the array
- sort($queries); // Sort the queries alphabetically
- file_put_contents($file, implode(PHP_EOL, $queries) . PHP_EOL); // Save the sorted queries back to the file
- //echo "Query added to queries.txt.
";
- } else {
- echo "";
- //echo "Query already exists in queries.txt.
";
- }
- */
-
-
- $conn->close();
}
- ?>
+
+ $conn->close();
+}
+?>