Skip to content

Commit d6de95f

Browse files
committed
fix: empechage d'echaper une valeur plusieurs fois
1 parent bdca704 commit d6de95f

2 files changed

Lines changed: 19 additions & 2 deletions

File tree

src/Builder/BaseBuilder.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2738,9 +2738,9 @@ protected function parseCondition($field, $value = null, $join = '', $escape = t
27382738
if (! str_contains($condition, 'IN')) {
27392739
$condition = ' IN ';
27402740
}
2741-
$value = '(' . implode(',', array_map(fn ($val) => $escape === true ? $this->db->quote($val) : $val, $value)) . ')';
2741+
$value = '(' . implode(',', array_map(fn ($v) => $this->db->escapeValue($escape, $v), $value)) . ')';
27422742
} else {
2743-
$value = ($escape && ! is_numeric($value)) ? $this->db->quote($value) : $value;
2743+
$value = $this->db->escapeValue($escape, $value);
27442744
}
27452745

27462746
$this->addCompiledWhere($join, $field, $condition, $value);

src/Connection/BaseConnection.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1431,6 +1431,23 @@ public function escapeIdentifiers($item)
14311431
);
14321432
}
14331433

1434+
/**
1435+
* Échappe une valeur de la clause where
1436+
*/
1437+
public function escapeValue(bool $escape, $value)
1438+
{
1439+
if (! $escape || is_numeric($value)) {
1440+
return $value;
1441+
}
1442+
1443+
if (is_string($value) && ! str_starts_with($value, "'") && ! str_ends_with($value, "'") ) {
1444+
return $this->quote($value);
1445+
}
1446+
1447+
return $value;
1448+
}
1449+
1450+
14341451
/**
14351452
* "Chaîne d'échappement "intelligente
14361453
*

0 commit comments

Comments
 (0)