Stop.
Enter data into your database in as simple a form as possible, and sort the presentation out when you display.
More importantly, you cannot distinguish between £ meaning Pounds Sterling and £ meaning GIP.
You need to convert the input to the relevant value before inserting.
One solution (following the suggestion of harryg to use ISO codes) is this:
// pass the input to a variable
$currency_raw = $this->input->post('currency');
// potentially, process it to standardise (trim, uppercase etc)
// use a switch to set the $currency value you'll insert
switch ($currency_raw) {
case "£":
$currency = "GBP";
break;
default:
// unrecognised currencies should error
$currency = "???";
}
$sql= array (
'currency'=>$currency,
'total'=>$this->input->post('total'),
'expenses'=>$this->input->post('expenses'),
);
$ins = $this->db->insert('donations',$sql);
You could do something similar to convert GBP back to £ on display.
In large applications you may find speed and data-size benefits from storing currencies as an int, and having a look up table.
However, you probably need really to look at the form fields. You can display £ (or better, "£ (GBP)" in a dropdown but have GBP as the value submitted, which would be best all round.