Anyone got any guidance on this?
I have developed a website on my local machine using an installation of MYSQL5. It has the following characater settings (which I now believe to be default):
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_filesystem binary
character_set_results latin1
character_set_server latin1
character_set_system utf8
When i deployed the website to a shared hosting server which has a MYSQL5 database also but different character settings the way the website handles escaped strings has changed. The character set settings on the hosted db are:
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
The issue I'm getting is that on the hosted db it isnt escaping strings the way i want it to.
Before i make the db call to insert a comment from a comment form i'm escaping things (or intending to) like commas etc:
PHP Code:
$this->commenttext = $this->mysqli->real_escape_string($this->commenttext);
On the local instance of the website a string such as "Jim's Comment" will be inserted as "Jim's Comment" but on the hosted db its inserted as "Jim\'s Comment". Thats just one example of the issues i'm having.
Questions I have are what are the implications of not using the default Mysql character set settings and if i was to reset my local machine to match the settings on the hosted service db how can I get the real_escape_string function to escape the relevant characters? Should my hosted service be reset to the dafault character set settings? Which way should I go?
Any help would be much appreciated as i've done a fair bit of reading on this but nothing thats got it clear in my head yet.