I am migrating my site into php mysqli from php mysql_* methods.
I had following code that did the job:
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'");
Without this query my string characters (in Georgian language) were written with question marks. For example it was written ????????? instead of გამარჯობა
So since it did its job I was happy, but now I cannot do the same with mysqli.
$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->query("SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'");
Can anyone please help me out? Thanks.
You can use
mysqli_set_charset
However, to set collation, you will still have to use the
SET NAMES
query.It is not recommended to use mysqli query in order to set names but rather mysqli::set_charset
http://php.net/manual/en/mysqli.set-charset.php
or
mysqli->set_charset("utf8")
A PHP feature request/bug report was filed...
See https://bugs.php.net/bug.php?id=52267 which garnered the response from uw@php.net:
He/she also links to http://dev.mysql.com/doc/refman/5.1/en/mysql-set-character-set.html
And I'll link to http://dev.mysql.com/doc/refman/5.6/en/charset-collate.html which shows how to make queries using whatever collation suits that query.