Вы, вероятно, должны отделить проверку данных от создания запроса. Это можно сделать следующим образом:
$firstName = strlen($data['firstname'])? "'".$mysqli->real_escape_string($data['firstname'])."'": "NULL";
$sql = "INSERT INTO address SET firstname = " . $firstName;
Это проверит, что $ data ['firstname'] содержит значение, и если нет, то используется Null. Затем он объединяется в ваш запрос, который вы затем выполните на следующем шаге.
Это ни в коем случае не единственный (или даже лучший) подход, но на основе предоставленного вами кода это должно дать вам начало.