I've introduced $PDO->query('SET NAMES utf8;');
in my connection library code to get some Unicode compliance. This works on some hosts where I can follow this with PDO statement executions with INSERT using the .execute()
.
However, on some hosting plans, I'm encountering this error:
General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
So, before SET NAMES, I introduced $PDO->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE);
, but I'm still getting the error. I then set that value to FALSE and I'm still getting the error.
Of course, if I remove the "SET NAMES utf8"
statement, the problem goes away. And again -- this problem only occurs on some web hosts.
What's the proper way to switch MySQL to Unicode that works on most Linux hosting plans?