Я думаю, что вы допустили ошибку здесь:
'NULL, '".$department.
Предположительно, вы намеревались
'NULL', ".$department."
НО: похоже, вы пытаетесь вставить буквенный текст «NULL» в свою базу данных, что, как я полагаю, не то, что вы намеревались. NULL - это ключевое слово, поэтому вы можете просто использовать пустое слово NULL везде, где вы вставляете нулевое значение (поэтому кавычек вокруг него не требуется).
Более того, рискуя отвлечь вас от текущей проблемы, вы действительно не должны выполнять операторы SQL путем составления строки, как вы это делаете. Вот как успешны атаки SQL-инъекций. Лучше использовать PDO с подготовленными утверждениями. Вот краткое описание того, как его использовать:
http://www.php.net/manual/en/pdo.prepared-statements.php
Основные преимущества:
- Вы удалили явную зависимость от Mysql, созданную функциями mysql_ *
- Вы можете избежать атак с использованием SQL-инъекций.
- Ваш код должен быть легче читать без сложной композиции строк
Просто для полноты, вот как ваш код будет выглядеть с PDO
$stmt = $dbh->prepare("INSERT INTO imstillr_crm.customerinfo (id, companyname, primarycontact, primaryemail, prefphone, secondarycontact, secondaryemail, optionalphone, department, website) VALUES (:id, :companyname, :primarycontact, :primaryemail, :prefphone, :secondarycontact, :secondaryemail, :optionalphone, :department, :website)");
$stmt->bindParam(":id", NULL);
$stmt->bindParam(":companyname", $company);
$stmt->bindParam(":primarycontact", $primarycontact);
...
$stmt->execute();
Обратите внимание, что вам не нужно ставить кавычки вокруг значений. Они могут содержать различные символы, такие как кавычки, точки с запятой и т. Д., И это не вызовет проблем в вашей базе данных (они могут вызвать проблемы в других местах вашего приложения, но это другое обсуждение).