正确的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 

我有搜索试图找出一种方法来显示与口音的信,但我不能解决这个问题。

+0

它是'mysqli'还是'PDO'?你的问题中有两个。 – tadman

+0

我的问题是与PDO,我做了一个网页使用本书PHP和MySQL Web开发(第四版)卢克威灵(作者),劳拉汤姆森,但书现在变老了,我意识到我的应用程序没有安全毕竟,读完之后我试着用相同的数据库来使用PDO,应用程序已经工作,当我使用PDO连接时,它仍然可以工作,但是口音很混乱。我找到了解决方案,但解决方案不是由某些程序员推荐的,我将此行添加到数组 – user2631215

+0

听起来像您有字符编码问题。确保你全面使用UTF-8。你有一个重音字符如何显示的例子吗?通常情况下,Windows-1252被发布并解释为UTF-8,反之亦然。 – tadman

我的解决方案完全不同。没有任何新的PDO选项等......我的问题是当我通过phpadmin或脚本向db填充值时,总会出现这种问题。但是,当我在电子表格软件中填充数据库表,然后将填充的文件导入数据库时​​,问题就解决了。这些知识让我活了一天。希望能帮助到你。对不起,我的英文,我是斯洛伐克语。