我需要从一个特定的网络托管服务中访问数据库。页面使用 UTF-8 编码,表单接收的数据应在不更改编码的情况下插入数据库。数据库也使用 UTF-8。
SET character set 'utf8' 或 SET names 'utf8' 在这里不能正常工作,因此此变通方法确保所有变量都设置为 utf-8。
<?php
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);
$re = mysql_query('SHOW VARIABLES LIKE "%character_set%";')or die(mysql_error());
while ($r = mysql_fetch_assoc($re)) {var_dump ($r); echo "<br />";} exit;
?>
现在所有重要的变量都是 utf-8,我们可以安全地使用 INSERT 或 SELECT 与 mysql_escape_string($var) 一起使用,而无需任何编码函数。