e95ab08945
- changes and fixes for parsing statements - QA SQl-Browser / SQL-Box: - added semicolon to table select box
56 Zeilen
1,5 KiB
PHP
56 Zeilen
1,5 KiB
PHP
<?php
|
|
/**
|
|
* This file is part of MySQLDumper released under the GNU/GPL 2 license
|
|
* http://www.mysqldumper.net
|
|
*
|
|
* @package MySQLDumper
|
|
* @subpackage SQL-Parser
|
|
* @version SVN: $Rev$
|
|
* @author $Author$
|
|
*/
|
|
|
|
/**
|
|
* Class to parse MySQL comments.
|
|
* This enables you to analyze and modify MySQL queries, which the user has entered.
|
|
*
|
|
* @package MySQLDumper
|
|
* @subpackage SQL-Parser
|
|
*/
|
|
class Msd_Sql_Parser_Statement_Comment implements Msd_Sql_Parser_Interface
|
|
{
|
|
/**
|
|
* Parse the statement.
|
|
*
|
|
* @param Msd_Sql_Object $sql MySQL comment.
|
|
*
|
|
* @return string
|
|
*/
|
|
public function parse(Msd_Sql_Object $sql)
|
|
{
|
|
$sql->setState('Comment');
|
|
$firstChars = $sql->getData($sql->getPointer() + 3, false);
|
|
$includeMatch = true;
|
|
$returnStatement = false;
|
|
if (substr($firstChars, 0, 2) == '--' || substr($firstChars, 0, 1) == '#') {
|
|
// one line comment -> match new line
|
|
$match = "\n";
|
|
$includeMatch = false;
|
|
} else {
|
|
if ($firstChars == '/*!') {
|
|
// conditionial statement
|
|
$match = '*/;';
|
|
$returnStatement = true;
|
|
} else {
|
|
// multi line comment
|
|
$match = '*/';
|
|
}
|
|
}
|
|
$endOfStatement = $sql->getPosition($match, $includeMatch);
|
|
$statement = $sql->getData($endOfStatement);
|
|
if ($returnStatement === true) {
|
|
return $statement;
|
|
} else {
|
|
return '';
|
|
}
|
|
}
|
|
}
|