Skip to content

Selectors as arrays -> trims leading zeroes from selector value in SQL query #743

@Lazerproof

Description

@Lazerproof

Short description of the issue

I have this selector in associative array format

$selector = [
  'template' => 'diagnostic',
  'diagnostic_code%=' => '0009',
  'limit' => '20'
];

Expected behavior

The same selector but in string format

"template=diagnostic, diagnostic_code%=0009, limit=20";

produces such SQL query

SELECT SQL_CALC_FOUND_ROWS pages.id,pages.parent_id,pages.templates_id 
FROM `pages` 
JOIN field_diagnostic_code AS field_diagnostic_code ON field_diagnostic_code.pages_id=pages.id AND (((field_diagnostic_code.data LIKE '%0009%' ) )) 
WHERE (pages.templates_id=65) 
AND (pages.status<1024) 
GROUP BY pages.id 
LIMIT 0,20

I expect that the same selectors produce the same SQL queries.

Actual behavior

$selector = [
  'template' => 'diagnostic',
  'diagnostic_code%=' => '0009',
  'limit' => '20'
];

Trims leading zeroes and produces such SQL query:

SELECT SQL_CALC_FOUND_ROWS pages.id,pages.parent_id,pages.templates_id 
FROM `pages` 
JOIN field_diagnostic_code AS field_diagnostic_code ON field_diagnostic_code.pages_id=pages.id AND (((field_diagnostic_code.data LIKE '%9%' ) )) 
WHERE (pages.templates_id=65) 
AND (pages.status<1024) 
GROUP BY pages.id 
LIMIT 0,20

Setup/Environment

PW

  • ProcessWire version: 3.0.118
  • (Optional) PHP version: 7.2.4
  • (Optional) MySQL version: 5.7.19

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions