【发布时间】:2011-05-20 16:10:49
【问题描述】:
我以前在正常的 mysql_* 连接中就有这个:
mysql_set_charset("utf8",$link);
mysql_query("SET NAMES 'UTF8'");
PDO 需要它吗?我应该在哪里拥有它?
$connect = new PDO("mysql:host=$host;dbname=$db", $user, $pass, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
【问题讨论】:
-
由于 SQL 注入,应避免 "SET NAMES utf8"。详情请见php.net/manual/en/mysqlinfo.concepts.charset.php。
-
如果您有字符集问题,那么您可能别无选择,只能设置为 utf8。我认为应该使用下面的connection string as shown by Cobra_Fast。使用 PDO::prepare 准备带有绑定参数的 SQL 语句。
-
@masakielastic,那么我们应该如何将排序规则指定为“SET NAMES utf8 COLLATE utf8_unicode_ci”