How to add new values to a custom field I can't seem to find the answer to this anywhere.

Programmatically, I need to add new values to a custom field of a new node instance I just created via API.  I am taking input via a form and want to add that data to the custom field in the new node.  I know the columns of the custom field.

How can I do that, or where is a good reference?

(the custom field type is address, if that matters)
If you are using a custom form which is invoked by a menu callback, you could try this.

Assuming that you have a postal address field type (provided by the addressfield module) which as 5 sub-fields - country, address 1, address 2, city and postal code in your content type.

/**
 * This will be invokded by a menu callback
*/
function yourmodule_custom_form($form, &amp;$form_state){

    /* your form elements definition here */

    $form['#validate'][] = 'yourmodule_custom_form_validate';       
    $form['#submit'][] = 'yourmodule_custom_form_submit';

    return $form;
}
/**
 * Validation attached to the form
*/  
function yourmodule_custom_form_validate($form, &amp;$form_state){
    // do validation here
}
/**
 * Submit handler attached to the form
*/
function yourmodule_custom_form_submit($form, &amp;$form_state){
    global $user;
    $values = $form_state['values'];

    # Create a node object, and add node properties.
    $node = new stdClass();
    $node-&gt;type = 'your_content_type';
    $node-&gt;uid = $user-&gt;uid;
    $node-&gt;created = strtotime("now");
    $node-&gt;changed = strtotime("now");
    $node-&gt;status = 1;
    $node-&gt;comment = 0;
    $node-&gt;promote = 0;
    $node-&gt;moderate = 0;
    $node-&gt;sticky = 0;
    $node-&gt;language = LANGUAGE_NONE;

    $field_address = $values['field_address'][LANGUAGE_NONE][0];

    $node-&gt;field_address_country = $field_address['country'];
    $node-&gt;field_address_thoroughfare = $field_address['thoroughfare'];
    $node-&gt;field_address_premise = $field_address['premise'];
    $node-&gt;field_address_locality = $field_address['locality'];
    $node-&gt;field_address_postal_code = $field_address['postal_code'];

    node_object_prepare($node);
    # Save the node.
    # The node will also get published, if $node-&gt;status was set to 1.
    node_save($node);
    $nid = $node-&gt;nid;
    # if you want to redirect to a page after submission, use this
    $form_state['redirect'] = 'path/to/redirect';
    drupal_redirect_form($form_state);
}


I did not test the code. It is just for example. You may need to amend it by yourself.
You can inspect your address field name by printing out $form.

dpm($form); // if you have devel module enabled
echo '&lt;pre&gt;'; print_r($form); echo '&lt;/pre&gt;'; // if you don't have devel moduel


Also note that when you create a new field, Drupal creates two new tables starting with field_data_field and field_revision_field. If you name the field "address", you will see two new tables field_data_field_address and field_revision_field_address, you could look up into those tables.