Мой код работает:
$data['TITLE'] = $sqlHelper->forSql($data['TITLE']);
$data['PUBLISHED'] = $sqlHelper->forSql($data['PUBLISHED']);
$data['DEVELOPER'] = $sqlHelper->forSql($data['DEVELOPER']);
$data['SITE_ID'] = $sqlHelper->forSql($data['SITE_ID']);
$connection->queryExecute("INSERT INTO `test` (`TITLE`,`PUBLISHED`,`DEVELOPER`,`SITE_ID`) VALUES ('{$data['TITLE']}','{$data['PUBLISHED']}','{$data['DEVELOPER']}','{$data['SITE_ID']}')");
Но "Автоматическая проверка безопасности битрикс" в Маркетплейсе жалуется на
$connection->queryExecute и предлагает заменить на
$connection->queryExecute(
'INSERT INTO `test` (`TITLE`,`PUBLISHED`,`DEVELOPER`,`SITE_ID`) VALUES (?,?,?,?)',
[$data['TITLE'], $data['PUBLISHED'], $data['DEVELOPER'], $data['SITE_ID']]
);
После замены получаю ошибку:
Mysql query error: (1064) You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?,?,?)' at line 1
Как решить данную проблему?
После полной инъекции переменной вплоть до банального - ИИ всё равно требует исправить.