正确的pdo连接使用口音
问题描述:
嗨我有一个问题显示PDO连接上的重音。 我学习PHP的web开发,我开始使用mysql旧的PHP连接正确的pdo连接使用口音
function db_connect()
{
$result = new mysqli('localhost', 'database', 'password', 'user');
if (!$result)
return false;
return $result;
}
我的表使用的latin1和utf8的字符集开发,网页能正常工作,呈现出口音的话。
我知道字符集和整理是好的,因为它以旧的方式工作。 但是当我尝试使用PDO时,所有带有重音符号的单词都有不同。 这里是和例子optain类别名称
$db = database_connect();
$query = " select xxx from yyy where xxxyid = :xxxyid ";
$query_params = array(
':xxxyid' => $xxxyid
);
// Execute the query against the database
$query = $db->prepare($query);
$result = $query->execute($query_params);
if (!$result)
trigger_error('Query failed: ' . mysql_error(), E_USER_ERROR);
$num_xxx = $query->rowCount();
if ($num_xxxs == 0)
return false;
$row = $query->fetch();
return $row['name'];
和我连接如设置这样
$db_options = array(
PDO::ATTR_EMULATE_PREPARES => false // important! use actual prepared statements (default: emulate prepared statements)
, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION // throw exceptions on errors (default: stay silent)
, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC // fetch associative arrays (default: mixed arrays)
);
$database = new PDO('mysql:host=server;dbname=dbname;charset=utf8', 'user', 'password', $db_options); // important! specify the character encoding in the DSN string, don't use SET NAMES
// create prepared statement with one parameter for the category ID
我有搜索试图找出一种方法来显示与口音的信,但我不能解决这个问题。
答
我的解决方案完全不同。没有任何新的PDO选项等......我的问题是当我通过phpadmin或脚本向db填充值时,总会出现这种问题。但是,当我在电子表格软件中填充数据库表,然后将填充的文件导入数据库时,问题就解决了。这些知识让我活了一天。希望能帮助到你。对不起,我的英文,我是斯洛伐克语。
它是'mysqli'还是'PDO'?你的问题中有两个。 – tadman
我的问题是与PDO,我做了一个网页使用本书PHP和MySQL Web开发(第四版)卢克威灵(作者),劳拉汤姆森,但书现在变老了,我意识到我的应用程序没有安全毕竟,读完之后我试着用相同的数据库来使用PDO,应用程序已经工作,当我使用PDO连接时,它仍然可以工作,但是口音很混乱。我找到了解决方案,但解决方案不是由某些程序员推荐的,我将此行添加到数组 – user2631215
听起来像您有字符编码问题。确保你全面使用UTF-8。你有一个重音字符如何显示的例子吗?通常情况下,Windows-1252被发布并解释为UTF-8,反之亦然。 – tadman