Closed
Description
Hello,
I discovered that there could be something wrong with parsing commas in MySQL functions like concat
or replace
.
When I'm trying to parse, and fetch values, or rebuild INSERT queries, which contains some concat, or replace, it 'eats' all commas, which makes output queries as invalid.
Sample parsed queries:
INSERT INTO `some_table` VALUES (replace('something_camel_case','_', ''));
INSERT INTO `some_table` VALUES (concat('value1', 'value2', 'value3'));
Output queries:
INSERT INTO `some_table` VALUES (replace('something_camel_case''_' ''));
INSERT INTO `some_table` VALUES (concat('value1' 'value2' 'value3'));
Version: 5.7.0
PHP: 8.2.6
Code example:
<?php
use PhpMyAdmin\SqlParser\Parser;
use PhpMyAdmin\SqlParser\Statements\InsertStatement;
require_once __DIR__ . '/vendor/autoload.php';
$inputQueries = "
INSERT INTO `some_table` VALUES (replace('something_camel_case','_', ''));
INSERT INTO `some_table` VALUES (concat('value1', 'value2', 'value3'));
";
$parser = new Parser($inputQueries);
foreach ($parser->statements as $statement) {
if ($statement instanceof InsertStatement) {
var_dump($statement->values[0]->raw[0]);
}
var_dump($statement->build());
}