Add SQL parse error message when simulating DML
Fixes https://github.com/phpmyadmin/phpmyadmin/issues/18903 Signed-off-by: Maurício Meneghini Fauth <mauricio@mfauth.net>
This commit is contained in:
parent
bf45b50122
commit
92efecc7f6
@ -81,6 +81,12 @@ final class SimulateDmlController extends AbstractController
|
||||
|
||||
private function process(Parser $parser): void
|
||||
{
|
||||
if ($parser->errors !== []) {
|
||||
$this->error = $parser->errors[0]->getMessage();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ($parser->statements as $statement) {
|
||||
if (
|
||||
! $statement instanceof UpdateStatement && ! $statement instanceof DeleteStatement
|
||||
|
||||
@ -280,4 +280,27 @@ class SimulateDmlControllerTest extends AbstractTestCase
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function testStatementWithParsingError(): void
|
||||
{
|
||||
$_POST['sql_delimiter'] = ';';
|
||||
$GLOBALS['sql_query'] = 'UPDATE actor SET';
|
||||
|
||||
$responseRenderer = new ResponseRenderer();
|
||||
$controller = new SimulateDmlController(
|
||||
$responseRenderer,
|
||||
new Template(),
|
||||
new SimulateDml($this->createDatabaseInterface())
|
||||
);
|
||||
$controller();
|
||||
|
||||
$expectedMessage = <<<'HTML'
|
||||
<div class="alert alert-danger" role="alert">
|
||||
<img src="themes/dot.gif" title="" alt="" class="icon ic_s_error"> Missing assignment in SET operation.
|
||||
</div>
|
||||
|
||||
HTML;
|
||||
|
||||
self::assertSame(['message' => $expectedMessage, 'sql_data' => false], $responseRenderer->getJSONResult());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user