INSERT INTO expenditures (`order_number`, `description`, `domain`, `price`, `billing_cycle`, `start_date`, `due_date`) VALUES ('49008','','','','','2006-07-26','2006-09-26') ON DUPLICATE KEY UPDATE `start_date`='2006-07-26',`due_date`='2006-09-26' That particular order_number exists, so instead of updating that order number, it just reports that zero rows were updated HERE IS SHOW CREATE TABLE EXPENDITURES (above sql was just a snippet to make it easier to read) CREATE TABLE `expenditures` (\n `order_number` varchar(16) collate latin1_general_ci NOT NULL,\n `description` varchar(255) collate latin1_general_ci NOT NULL,\n `domain` varchar(16) collate latin1_general_ci default NULL,\n `price` double NOT NULL,\n `billing_cycle` varchar(16) collate latin1_general_ci NOT NULL,\n `start_date` date NOT NULL,\n `due_date` date NOT NULL,\n PRIMARY KEY (`order_number`),\n KEY `domain` (`domain`)\n) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ############################## CREATE TABLE `expenditures` ( `order_number` varchar(16) collate latin1_general_ci NOT NULL, `description` varchar(255) collate latin1_general_ci NOT NULL, `domain` varchar(16) collate latin1_general_ci default NULL, `price` double NOT NULL, `billing_cycle` varchar(16) collate latin1_general_ci NOT NULL, `start_date` date NOT NULL, `due_date` date NOT NULL, PRIMARY KEY (`order_number`), KEY `domain` (`domain`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; -- -- Dumping data for table `expenditures` -- INSERT INTO `expenditures` VALUES ('49008', 'Server Pentium733 (12M)', '89-149-194-149', 89.13, 'monthly', '2006-07-26', '2006-09-26');