How to set value programmatically for mobile number module's field using entity wrappers? how do I set value for the mobile_number field using entity wrappers?
Currently, this field is attached to an entity and I'm trying as below.

$entity_type = 'mp_customer';
$entity = entity_create($entity_type, array('type' => 'mp_customer'));
$wrapper = entity_metadata_wrapper($entity_type, $entity);
$wrapper->field_phone = "0777123456";

This gives an PDO Exception .... field_phone_value cannot be null....

Adding more
This field needs more data to store in field_data_field_phone,
those are:
{field_phone_value}
{field_phone_country}
{field_phone_local_number}
{field_phone_verified}
{field_phone_tfa}

This field was created using this module : https://www.drupal.org/project/mobile_number
To store a value with entity wrapper set() should be used. Please read https://www.drupal.org/docs/7/api/entity-api/entity-metadata-wrappers

So your code $wrapper-&gt;field_phone = "0777123456"; would be $wrapper-&gt;field_phone-&gt;set('0777123456'); if the field structure required just a simple string.

However, according to the error message, it is not a string as it requires additional values for {field_phone_value} {field_phone_country} {field_phone_local_number} {field_phone_verified} {field_phone_tfa}. 

So to make sure I would first figure out its structure. You could do so, for example, saving any value via UI and then outputting the value of respecting variable using dpm(). However, most probably its an array and you could give a try to:

$phone = array(
  'field_phone_value' =&gt; '0777123456',
  'field_phone_country' =&gt; 'US',
  'field_phone_local_number' =&gt; 'some value',
  'field_phone_verified' =&gt; 'some value',
  'field_phone_tfa' =&gt; 'some value'
);
$wrapper-&gt;field_phone-&gt;set($phone);