Login   Register  
PHP Classes
elePHPant
Icontem

File: Sql_Parser/Sql_ParserUpdate.class.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Tom Schaefer  >  SQL Parse and Compile  >  Sql_Parser/Sql_ParserUpdate.class.php  >  Download  
File: Sql_Parser/Sql_ParserUpdate.class.php
Role: Class source
Content type: text/plain
Description: parses update statement into object
Class: SQL Parse and Compile
Parse and compose SQL queries programatically
Author: By
Last change:
Date: 2008-12-03 12:21
Size: 2,130 bytes
 

Contents

Class file image Download
<?php

/**
 *
 * Sql_ParserUpdate
 * @package Sql
 * @subpackage Sql_Parser
 * @author Thomas Schäfer
 * @since 30.11.2008 07:49:30
 * @desc parses a sql update into object
 */

/**
 *
 * Sql_ParserUpdate
 * @package Sql
 * @subpackage Sql_Parser
 * @author Thomas Schäfer
 * @since 30.11.2008 07:49:30
 * @desc parses a sql update into object
 */

class Sql_ParserUpdate implements Sql_InterfaceParser {

    public static function 
doParse(){
    
        
Sql_Parser::getTok();
    
        if (
Sql_Object::token() == 'ident') {
            
$tree = array('Command' => 'update');
            
            if(
Sql_Object::token() == "ident" and Sql_Object::lexer()->tokText=="IGNORE") {
                
$tree["Statement"][] = Sql_Object::lexer()->tokText;
                
Sql_Parser::getTok();
            }
            
$tree['TableNames'][] = Sql_Object::lexer()->tokText;
        } else {
            return 
self::raiseError('Expected table name');
        }

        
Sql_Parser::getTok();

        if (
Sql_Object::token() != 'set') {
            return 
self::raiseError('Expected "set"');
        }

        while (
true
        {
            
            
Sql_Parser::getTok();
            
            if (
Sql_Object::token() != 'ident') {
                return 
Sql_Parser::raiseError('Expected a column name');
            }
            
$tree['ColumnNames'][] = Sql_Object::lexer()->tokText;
            
            
Sql_Parser::getTok();
            
            if (
Sql_Object::token() != '=') {
                return 
Sql_Parser::raiseError('Expected =');
            }
            
            
Sql_Parser::getTok();
            
            if (!
Sql_Parser::isVal(Sql_Object::token())) {
                return 
Sql_Parser::raiseError('Expected a value');
            }
            
$tree['Values'][] = array('Value'=>Sql_Object::lexer()->tokText,
                                      
'Type'=>Sql_Object::token());
            
            
Sql_Parser::getTok();
            
            if (
Sql_Object::token() == 'where') {
                
$clause Sql_Parser::parseSearchClause();
                if (
Sql_Parser::isError($clause)) {
                    return 
$clause;
                }
                
$tree['Where'] = $clause;
                break;
            } 
            elseif (
Sql_Object::token() != ','
            {
                return 
Sql_Parser::raiseError('Expected "where" or ","');
            }
        }
        return 
$tree;
        
    }
    
    public static function 
parse() {
        return 
self::doParse();
    }

}