How to upgrade Magento customer programatically?

I’m trying to modify existing customers data on magento programatically, but i have errors, hope someone can help me with this.

require_once('../app/Mage.php');
ini_set("error_reporting",E_ALL);
ini_set("display_errors",true);
umask (0);
Mage::app('admin');

$email = $_REQUEST['email'];
$firstname = $_REQUEST['firstname'];
$lastname = $_REQUEST['lastname'];
$newEmail = $_REQUEST['newEmail'];
$method = $_REQUEST['method'];
$user_id = $_REQUEST['user_id'];


$customer = Mage::getModel('customer/customer');
        $customer->setWebsiteId(Mage::app()->getWebsite()->getId());
        $customer->loadByEmail($email);
        $customer->setFirstname = $firstname; 
        $customer->setLastname = $lastname; 
        $customer->setEmail = $newEmail; 
        $customer->save();  

Here is the error message

Fatal error: Uncaught exception 'Mage_Customer_Exception' with message 'Customer email is required' in /home/insateck/www/zzWEBS/MAGENTO/ZZpruebasEXPRIMENET/app/Mage.php:580 Stack trace: #0 /home/insateck/www/zzWEBS/MAGENTO/ZZpruebasEXPRIMENET/app/code/core/Mage/Customer/Model/Resource/Customer.php(76): Mage::exception('Mage_Customer', 'Customer email ...') 
#1 /home/insateck/www/zzWEBS/MAGENTO/ZZpruebasEXPRIMENET/app/code/core/Mage/Eav/Model/Entity/Abstract.php(1122): Mage_Customer_Model_Resource_Customer->_beforeSave(Object(Mage_Customer_Model_Customer)) 
#2 /home/insateck/www/zzWEBS/MAGENTO/ZZpruebasEXPRIMENET/app/code/core/Mage/Core/Model/Abstract.php(318): Mage_Eav_Model_Entity_Abstract->save(Object(Mage_Customer_Model_Customer))
#3 /home/insateck/www/zzWEBS/MAGENTO/ZZpruebasEXPRIMENET/syncadaptax/update_client_methods.php(33): Mage_Core_Model_Abstract->save() 
#4 {main} thrown in /home/insateck/www/zzWEBS/MAGENTO/ZZpruebasEXPRIMENET/app/Mage.php on line 580

Thanks

Chris Stewart Asked on November 26, 2015 in Magento.
Add Comment
1 Answer(s)
Best answer

You can modify the condition for saving the new email as:

$customer = Mage::getModel('customer/customer');
$customer->setWebsiteId(Mage::app()->getWebsite()->getId());
$customer->loadByEmail($email);
if($customer->getId()>1){
     $customer2 = Mage::getModel('customer/customer');
     $customer2->setWebsiteId(Mage::app()->getWebsite()->getId());
     $customer2->loadByEmail($newEmail);
     if($customer2->getId()<1){
        $customer->setEmail($newEmail); 
     }
     $customer->setFirstname($firstname); 
     $customer->setLastname ($lastname); 
     $customer->save();
 }

The updated condition will avoid the fatal error Magento is giving you.

Chris Stewart Answered on November 26, 2015.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.