public function getNextStatement()
    {
        $isAfterBackslash = false;
        $isInString = false;
        $stringQuotes = '';
        $parsedString = '';
        $lowercaseString = ''; // helper variable for performance sake
        while ($this->pos <= $this->len) {
            $char = isset($this->sql[$this->pos]) ? $this->sql[$this->pos] : '';
            // check flags for strings or escaper
            switch ($char) {
                case "\\":
                    $isAfterBackslash = true;
                    break;
                case "'":
                case "\"":
                    if ($isInString && $stringQuotes == $char) {
                        if (!$isAfterBackslash) {
                            $isInString = false;
                        }
                    } elseif (!$isInString) {
                        $stringQuotes = $char;
                        $isInString = true;
                    }
                    break;
            }
            $this->pos++;
            if ($char !== "\\") {
                $isAfterBackslash = false;
            }
            if (!$isInString) {
                if (false !== strpos($lowercaseString, 'delimiter ')) {
                    // remove DELIMITER from string because it's a command-line keyword only
                    $parsedString = trim(str_ireplace('delimiter ', '', $parsedString));
                    // set new delimiter
                    $this->delimiter = $char;
                    // append other delimiter characters if any
                    while (isset($this->sql[$this->pos]) && $this->sql[$this->pos] != "\n") {
                        $this->delimiter .= $this->sql[$this->pos++]; // increase position
                    }
                    $this->delimiter = trim($this->delimiter);
                    // store delimiter length for better performance
                    $this->delimiterLength = strlen($this->delimiter);
                    // delimiter has changed so return current sql if any
                    if ($parsedString) {
                        return $parsedString;
                    } else {
                        // reset helper variable
                        $lowercaseString = '';
                        continue;
                    }
                }
                // get next characters if we have multiple characters in delimiter
                $nextChars = '';
                for ($i = 0; $i < $this->delimiterLength - 1; $i++) {
                    if (!isset($this->sql[$this->pos + $i])) break;
                    $nextChars .= $this->sql[$this->pos + $i];
                }
                // check for end of statement
                if ($char.$nextChars == $this->delimiter) {
                    $this->pos += $i; // increase position
                    return trim($parsedString);
                }
                // avoid using strtolower on the whole parsed string every time new character is added
                // there is also no point in adding characters which are in the string
                $lowercaseString .= strtolower($char);
            }
            $parsedString .= $char;
        }
        return trim($parsedString);
    }
public function getNextStatement()
    {
        $isAfterBackslash = false;
        $isInString = false;
        $stringQuotes = '';
        $parsedString = '';
        $lowercaseString = ''; // helper variable for performance sake
        while ($this->pos <= $this->len) {
            $char = isset($this->sql[$this->pos]) ? $this->sql[$this->pos] : '';
            // check flags for strings or escaper
            switch ($char) {
                case "\\":
                    $isAfterBackslash = true;
                    break;
                case "'":
                case "\"":
                    if ($isInString && $stringQuotes == $char) {
                        if (!$isAfterBackslash) {
                            $isInString = false;
                        }
                    } elseif (!$isInString) {
                        $stringQuotes = $char;
                        $isInString = true;
                    }
                    break;
            }
            $this->pos++;
            if ($char !== "\\") {
                $isAfterBackslash = false;
            }
            if (!$isInString) {
                if (false !== strpos($lowercaseString, 'delimiter ')) {
                    // remove DELIMITER from string because it's a command-line keyword only
                    $parsedString = trim(str_ireplace('delimiter ', '', $parsedString));
                    // set new delimiter
                    $this->delimiter = $char;
                    // append other delimiter characters if any
                    while (isset($this->sql[$this->pos]) && $this->sql[$this->pos] != "\n") {
                        $this->delimiter .= $this->sql[$this->pos++]; // increase position
                    }
                    $this->delimiter = trim($this->delimiter);
                    // store delimiter length for better performance
                    $this->delimiterLength = strlen($this->delimiter);
                    // delimiter has changed so return current sql if any
                    if ($parsedString) {
                        return $parsedString;
                    } else {
                        // reset helper variable
                        $lowercaseString = '';
                        continue;
                    }
                }
                // get next characters if we have multiple characters in delimiter
                $nextChars = '';
                for ($i = 0; $i < $this->delimiterLength - 1; $i++) {
                    if (!isset($this->sql[$this->pos + $i])) break;
                    $nextChars .= $this->sql[$this->pos + $i];
                }
                // check for end of statement
                if ($char.$nextChars == $this->delimiter) {
                    $this->pos += $i; // increase position
                    return trim($parsedString);
                }
                // avoid using strtolower on the whole parsed string every time new character is added
                // there is also no point in adding characters which are in the string
                $lowercaseString .= strtolower($char);
            }
            $parsedString .= $char;
        }
        return trim($parsedString);
    }
public function getNextStatement ( ) { $ isAfterBackslash = false ; $ isInString = false ; $ stringQuotes = '' ; $ parsedString = '' ; $ lowercaseString = '' ; // helper variable for performance sake while ( $ this -> pos <= $ this -> len ) { $ char = isset ( $ this -> sql [ $ this -> pos ] ) ? $ this -> sql [ $ this -> pos ] : '' ; // check flags for strings or escaper switch ( $ char ) { case "\\" : $ isAfterBackslash = true ; break ; case "'" : case "\"" : if ( $ isInString && $ stringQuotes == $ char ) { if ( ! $ isAfterBackslash ) { $ isInString = false ; } } elseif ( ! $ isInString ) { $ stringQuotes = $ char ; $ isInString = true ; } break ; } $ this -> pos ++ ; if ( $ char !== "\\" ) { $ isAfterBackslash = false ; } if ( ! $ isInString ) { if ( false !== strpos ( $ lowercaseString , 'delimiter ' ) ) { // remove DELIMITER from string because it's a command-line keyword only $ parsedString = trim ( str_ireplace ( 'delimiter ' , '' , $ parsedString ) ) ; // set new delimiter $ this -> delimiter = $ char ; // append other delimiter characters if any while ( isset ( $ this -> sql [ $ this -> pos ] ) && $ this -> sql [ $ this -> pos ] != "\n" ) { $ this -> delimiter .= $ this -> sql [ $ this -> pos ++ ] ; // increase position } $ this -> delimiter = trim ( $ this -> delimiter ) ; // store delimiter length for better performance $ this -> delimiterLength = strlen ( $ this -> delimiter ) ; // delimiter has changed so return current sql if any if ( $ parsedString ) { return $ parsedString ; } else { // reset helper variable $ lowercaseString = '' ; continue ; } } // get next characters if we have multiple characters in delimiter $ nextChars = '' ; for ( $ i = 0 ; $ i < $ this -> delimiterLength - 1 ; $ i ++ ) { if ( ! isset ( $ this -> sql [ $ this -> pos + $ i ] ) ) break ; $ nextChars .= $ this -> sql [ $ this -> pos + $ i ] ; } // check for end of statement if ( $ char . $ nextChars == $ this -> delimiter ) { $ this -> pos += $ i ; // increase position return trim ( $ parsedString ) ; } // avoid using strtolower on the whole parsed string every time new character is added // there is also no point in adding characters which are in the string $ lowercaseString .= strtolower ( $ char ) ; } $ parsedString .= $ char ; } return trim ( $ parsedString ) ; }
Gets the next SQL statement in the inner SQL string,
and advances the cursor to the end of this statement.

@return string A SQL statement
Gets the next SQL statement in the inner SQL string and advances the cursor to the end of this statement .