php mysql SET NAMES 'utf8' COLLATE 'utf8_unicode_ci' doesn't work with mysqli

mysqli, php

Solution

It is not recommended to use mysqli query in order to set names but rather mysqli::set_charset

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->set_charset("utf8");

Problem

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.

Original source