El problema es que si es opcional el campo, tu estas armando tu query esperando siempre un valor, y lo que hace PHP al armar la query es dejarlo así:
Lo cual es erroneo, en ese caso el query correcto debería ser así:
Sin las comillas simples, para resolverlo tienes que re-estructurar como creas las queries, por ejemplo:
Código PHP:
Ver original<?php
$query = "INSERT INTO empresa (nom_comer_gr) VALUES ($empresa)";
Aunque lo mejor es que uses PDO y prepared statements, así te evitas ese paso y PDO se encarga de escapar y reemplazar la variable por su valor correcto:
Código PHP:
Ver original$empresa = isset($_POST['empresa']) ?
$_POST['empresa'] : null;
$db = new PDO($dsn);
$sth = $db->prepare('INSERT INTO empresa (nom_comer_gr) VALUES (?)');
$sth->execute(array($empresa));
Saludos.