Ваша схема, вероятно, имеет атрибут NOT NULL
для fname, поэтому вы получаете нулевую ошибку.
Согласно вашему коду, вы, кажется, правильно связываете параметры, проверяли ли вы,$ fname на самом деле как значение?
Альтернативная конструкция, для ясности (лично мне не нравится?,?,? привязка).Кроме того, позвольте мне уточнить следующий код, сказав, что это PDO, а не mysqli, OP не указал, какой из них использовался, что это только для демонстрационных целей:
$sql =
"INSERT INTO `users` " .
"SET fname = :fname, " .
"mname = :mname, " .
"lname = :lname, " .
"email = :email, " .
"pass = :pass, " .
"reg_dt = NOW()";
$stmt = $db->prepare($sql);
$stmt->bindValue(':fname', $fname, PDO::PARAM_STRING);
$stmt->bindValue(':mname', $mname, PDO::PARAM_STRING);
$stmt->bindValue(':lname', $lname, PDO::PARAM_STRING);
$stmt->bindValue(':email', $email, PDO::PARAM_STRING);
$stmt->bindValue(':pass', $pass, PDO::PARAM_STRING);
Или если выне предпочитайте конструкцию, вы можете рассмотреть возможность добавления атрибута CURRENT_TIMESTAMP
в столбец отметки времени:
`reg_dt` timestamp NULL default CURRENT_TIMESTAMP