Commit 2802d88d authored by Benjamin Eberlei's avatar Benjamin Eberlei

Merge pull request #237 from roverwolf/DBAL-398

DBAL-398: Do not treat assignment operator as a parameter
parents 6ace93c9 8bc32cfe
...@@ -54,7 +54,7 @@ class SQLParserUtils ...@@ -54,7 +54,7 @@ class SQLParserUtils
$stmtLen = strlen($statement); $stmtLen = strlen($statement);
$paramMap = array(); $paramMap = array();
for ($i = 0; $i < $stmtLen; $i++) { for ($i = 0; $i < $stmtLen; $i++) {
if ($statement[$i] == $match && !$inLiteral) { if ($statement[$i] == $match && !$inLiteral && ($isPositional || $statement[$i+1] != '=')) {
// real positional parameter detected // real positional parameter detected
if ($isPositional) { if ($isPositional) {
$paramMap[$count] = $i; $paramMap[$count] = $i;
...@@ -180,4 +180,4 @@ class SQLParserUtils ...@@ -180,4 +180,4 @@ class SQLParserUtils
return array($query, $paramsOrd, $typesOrd); return array($query, $paramsOrd, $typesOrd);
} }
} }
\ No newline at end of file
...@@ -35,6 +35,8 @@ class SQLParserUtilsTest extends \Doctrine\Tests\DbalTestCase ...@@ -35,6 +35,8 @@ class SQLParserUtilsTest extends \Doctrine\Tests\DbalTestCase
array('SELECT ":foo" FROM Foo WHERE bar IN (:name1, :name2)', false, array(37 => 'name1', 45 => 'name2')), array('SELECT ":foo" FROM Foo WHERE bar IN (:name1, :name2)', false, array(37 => 'name1', 45 => 'name2')),
array("SELECT ':foo' FROM Foo WHERE bar IN (:name1, :name2)", false, array(37 => 'name1', 45 => 'name2')), array("SELECT ':foo' FROM Foo WHERE bar IN (:name1, :name2)", false, array(37 => 'name1', 45 => 'name2')),
array('SELECT :foo_id', false, array(7 => 'foo_id')), // Ticket DBAL-231 array('SELECT :foo_id', false, array(7 => 'foo_id')), // Ticket DBAL-231
array('SELECT @rank := 1', false, array()), // Ticket DBAL-398
array('SELECT @rank := 1 AS rank, :foo AS foo FROM :bar', false, array(27 => 'foo', 44 => 'bar')), // Ticket DBAL-398
); );
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment