MySQL LOAD DATA LOCAL INFILE与PHP MySQL之间的区别

I've got a statement

LOAD DATA LOCAL INFILE 'location\\march.csv' 
            INTO table waterportal.payments
            FIELDS TERMINATED BY ','
            OPTIONALLY ENCLOSED BY '\"'   
            LINES TERMINATED BY '
'
            IGNORE 7 LINES
            (CustomerReference, AccountStatus, CustomerName, Reference, ProcurementGroup, ContractStatus, @ContractStart, @ContractEnd, ContractDurationMonths, ContractDurationYears, MainBillingAccountFlag, Service, PaymentMethod, TransferOutWater, TransferOutWaste, @DebtOver39Days, @CommissionRate, @ValueBillInMonth, @DateBilled, @PayableCommission,@dummy1,@dummy2,@dummy3)
            SET 
            UploadDate = NOW(),
            ContractStart = STR_TO_DATE(@ContractStart, '%d %b %y'),
            ContractEnd = STR_TO_DATE(@ContractEnd, '%d %b %y'),
            DateBilled = STR_TO_DATE(@DateBilled, '%d %b %y'),
            DebtOver39Days  =  REPLACE(REPLACE(TRIM(@DebtOver39Days), '£', ''), ',',''),
            ValueBillInMonth  = REPLACE(REPLACE(TRIM(@ValueBillInMonth), '£', ''), ',',''),
            PayableCommission  = REPLACE(REPLACE(TRIM(@PayableCommission), '£', ''), ',',''),
            CommissionRate = (TRIM(TRAILING '%' FROM NULLIF(@CommissionRate, ''))/100)
            ;

And if I run it in WorkBench it works fine. If I use the same statement in my PHP file, the DebtOver39Days, ValueBillInMonth and PayableCommission fields all fail and enter as 0.

I'm not sure if there's an alternative to DebtOver39Days = REPLACE(REPLACE(TRIM(@DebtOver39Days), '£', ''), ',',''),

that still strips out the £ from the start of the data.