function executeQuery($sql_query_str) { set_error_handler("txtdbapi_error_handler"); txtdbapi_clear_errors(); debug_printb("[executeQuery] Query: {$sql_query_str}<br>"); // Parse Query $start = getmicrotime(); $sqlParser = new SqlParser($sql_query_str); $sqlQuery = $sqlParser->parseSqlQuery(); debug_print("parseSqlQuery: " . (getmicrotime() - $start) . " seconds elapsed<br>"); // free $sqlParser unset($sqlParser); $sqlParser = ""; // Test Query if (!$sqlQuery || !$sqlQuery->test()) { restore_error_handler(); return false; } $start = getmicrotime(); debug_printb("[executeQuery] Parsed Query:<br>"); if (TXTDBAPI_DEBUG) { $sqlQuery->dump(); } // Dispatch switch ($sqlQuery->type) { case "SELECT": $rc = $this->executeSelectQuery($sqlQuery); break; case "INSERT": $rc = $this->executeInsertQuery($sqlQuery); break; case "DELETE": $rc = $this->executeDeleteQuery($sqlQuery); break; case "UPDATE": $rc = $this->executeUpdateQuery($sqlQuery); break; case "CREATE TABLE": $rc = $this->executeCreateTableQuery($sqlQuery); break; case "DROP TABLE": $rc = $this->executeDropTableQuery($sqlQuery); break; case "CREATE DATABASE": $rc = $this->executeCreateDatabaseQuery($sqlQuery); break; case "DROP DATABASE": $rc = $this->executeDropDatabaseQuery($sqlQuery); break; case "LIST TABLES": $rc = $this->executeListTablesQuery($sqlQuery); break; default: print_error_msg("Invalid or unsupported Query Type: " . $sqlQuery->type); restore_error_handler(); return false; } if (is_false($rc)) { print_error_msg("Query '" . $sql_query_str . "' failed"); } debug_printb("[executeQuery] Query execution done: " . (getmicrotime() - $start) . " seconds elapsed<br>"); restore_error_handler(); return $rc; }