Skip to content

Commit 3e3dad6

Browse files
webmailcontatosbarryvdh
authored andcommitted
Bugfix getSqlWithParams ReplacementParamsQuery (php-debugbar#351)
* Bugfix getSqlWithParams ReplacementParamsQuery * backward compatibility
1 parent 370af31 commit 3e3dad6

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

src/DebugBar/DataCollector/PDO/TracedStatement.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public function getSqlWithParams($quotationChar = '<>')
110110
foreach ($this->parameters as $k => $v) {
111111
$v = "$quoteLeft$v$quoteRight";
112112
if (!is_numeric($k)) {
113-
$sql = str_replace($k, $v, $sql);
113+
$sql = preg_replace("/{$k}\b/", $v, $sql, 1);
114114
} else {
115115
$p = strpos($sql, '?');
116116
$sql = substr($sql, 0, $p) . $v. substr($sql, $p + 1);
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
namespace DebugBar\Tests;
4+
5+
use DebugBar\DataCollector\PDO\TracedStatement;
6+
7+
/**
8+
* Class TracedStatementTest
9+
* @package DebugBar\Tests
10+
*/
11+
class TracedStatementTest extends DebugBarTestCase
12+
{
13+
/**
14+
* Check if query parameters are being replaced in the correct way
15+
* @bugFix Before fix it : select *
16+
* from geral.exame_part ep
17+
* where ep.id_exame = <1> and
18+
* ep.id_exame_situacao = <2>'
19+
* ep.id_exame_situacao = <1>_situacao
20+
* @return void
21+
*/
22+
public function testReplacementParamsQuery()
23+
{
24+
$sql = 'select *
25+
from geral.exame_part ep
26+
where ep.id_exame = :id_exame and
27+
ep.id_exame_situacao = :id_exame_situacao';
28+
$params = array(
29+
':id_exame' => 1,
30+
':id_exame_situacao' => 2
31+
);
32+
$traced = new TracedStatement($sql, $params);
33+
$expected = 'select *
34+
from geral.exame_part ep
35+
where ep.id_exame = <1> and
36+
ep.id_exame_situacao = <2>';
37+
$result = $traced->getSqlWithParams();
38+
$this->assertEquals($expected, $result);
39+
}
40+
}

0 commit comments

Comments
 (0)