$new_product->price = (isset($_POST['price'])?$_POST['price']:0);
не добавляет 0 в new_product->price, поэтому получается так, что в запросе две запятых подряд: INSERT INTO products (title, price, description, category, img) VALUES ('тест', , '', '', '')