Browse Source

Fix #17920: Fix for `Command::getRawSql` and `Expression` in params

tags/2.0.33
Alex 5 years ago committed by GitHub
parent
commit
50b19dbfba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      framework/CHANGELOG.md
  2. 6
      framework/db/Command.php
  3. 7
      tests/framework/db/CommandTest.php

1
framework/CHANGELOG.md

@ -24,6 +24,7 @@ Yii Framework 2 Change Log
- Bug #17884: Fix 0 values in console Table rendered as empty string (mikehaertl)
- Bug #13749: Fix Yii opens db connection even when hits query cache (shushenghong)
- Bug #17909: Reset DB schema, transaction, and driver name when the connection is closed (brandonkelly)
- Bug #17920: Fix for `Command::getRawSql` and `Expression` in params (alex-code)
2.0.32 January 21, 2020
-----------------------

6
framework/db/Command.php

@ -206,13 +206,13 @@ class Command extends Component
if (is_string($name) && strncmp(':', $name, 1)) {
$name = ':' . $name;
}
if (is_string($value)) {
$params[$name] = $this->db->quoteValue($value);
if (is_string($value) || $value instanceof Expression) {
$params[$name] = $this->db->quoteValue((string)$value);
} elseif (is_bool($value)) {
$params[$name] = ($value ? 'TRUE' : 'FALSE');
} elseif ($value === null) {
$params[$name] = 'NULL';
} elseif ((!is_object($value) && !is_resource($value)) || $value instanceof Expression) {
} elseif (!is_object($value) && !is_resource($value)) {
$params[$name] = $value;
}
}

7
tests/framework/db/CommandTest.php

@ -1357,8 +1357,13 @@ SQL;
[
'SELECT * FROM customer WHERE id IN (:ids)',
[':ids' => new Expression(implode(', ', [1, 2]))],
'SELECT * FROM customer WHERE id IN (1, 2)',
'SELECT * FROM customer WHERE id IN (\'1, 2\')',
],
[
'SELECT NOW() = :now',
[':now' => new Expression('NOW()')],
'SELECT NOW() = \'NOW()\'',
]
];
}

Loading…
Cancel
Save