Exemplo n.º 1
0
 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;
 }