저자: André Rothe (andre.rothe@phosco.info)
상속: implements PHPSQLParser\builders\Builder
예제 #1
0
 public function build(array $parsed)
 {
     $sql = "";
     if (array_key_exists("UNION ALL", $parsed) || array_key_exists("UNION", $parsed)) {
         foreach ($parsed as $union_type => $outer_v) {
             $first = true;
             foreach ($outer_v as $item) {
                 if (!$first) {
                     $sql .= " {$union_type} ";
                 } else {
                     $first = false;
                 }
                 $select_builder = new SelectStatementBuilder();
                 $len = strlen($sql);
                 $sql .= $select_builder->build($item);
                 if ($len === strlen($sql)) {
                     throw new UnableToCreateSQLException('FROM', $union_type, $outer_v, 'expr_type');
                 }
             }
         }
     } else {
         foreach ($parsed as $k => $v) {
             $len = strlen($sql);
             $sql .= $this->buildTable($v, $k);
             $sql .= $this->buildTableExpression($v, $k);
             $sql .= $this->buildSubquery($v, $k);
             if ($len == strlen($sql)) {
                 throw new UnableToCreateSQLException('FROM', $k, $v, 'expr_type');
             }
         }
     }
     return "FROM " . $sql;
 }
예제 #2
0
 public function create($parsed)
 {
     $k = key($parsed);
     switch ($k) {
         case 'UNION':
         case 'UNION ALL':
             throw new UnsupportedFeatureException($k);
             break;
         case 'SELECT':
             $builder = new SelectStatementBuilder();
             $this->created = $builder->build($parsed);
             break;
         case 'INSERT':
             $builder = new InsertStatementBuilder();
             $this->created = $builder->build($parsed);
             break;
         case 'REPLACE':
             $builder = new ReplaceStatementBuilder();
             $this->created = $builder->build($parsed);
             break;
         case 'DELETE':
             $builder = new DeleteStatementBuilder();
             $this->created = $builder->build($parsed);
             break;
         case 'UPDATE':
             $builder = new UpdateStatementBuilder();
             $this->created = $builder->build($parsed);
             break;
         case 'RENAME':
             $builder = new RenameStatementBuilder();
             $this->created = $builder->build($parsed);
             break;
         case 'SHOW':
             $builder = new ShowStatementBuilder();
             $this->created = $builder->build($parsed);
             break;
         case 'CREATE':
             $builder = new CreateStatementBuilder();
             $this->created = $builder->build($parsed);
             break;
         case 'BRACKET':
             $builder = new BracketStatementBuilder();
             $this->created = $builder->build($parsed);
             break;
         case 'DROP':
             $builder = new DropStatementBuilder();
             $this->created = $builder->build($parsed);
             break;
         default:
             throw new UnsupportedFeatureException($k);
             break;
     }
     return $this->created;
 }
 protected function buildSelectStatement($parsed)
 {
     $builder = new SelectStatementBuilder();
     return $builder->build($parsed);
 }