Анастасия, потому что старый синтаксис путём наращивания количества параметров очень неудобен, вероятнее всего, его просто оставили для совместимости со старыми скриптами.
Посмотрите, что именно вам там набилдил этот самый $product_builder, и там уже разбирайтесь, что с запросом не так (может быть, ключевое слово использовали в имени столбца, например).
IB495, ну так вам браузер будет 2 запроса будет отправлять - OPTIONS (preflight) и сам GET/POST/что-то ещё, потому какой-нибудь самый простой роутинг всё-таки сделать придётся, чтобы их отличать друг от друга.
А если запросы делаете с сервера на сервер, то весь этот CORS не нужен вообще, это для браузеров приблуда.
IB495, и где ваш запрос хотя бы что-то возвращает? Тем более, судя по вашему коду, никаким роутингом не пахнет, за любые запросы отдувается одна-единственная функция.
https://nginx.org/ru/docs/http/websocket.html