我有数据库:
结果呢:
这个代码:
<?php
$dbhost = '?';
$dbuser = '?';
$dbpass = '?';
try {
$dbh = new PDO("mysql:host=localhost;dbname=?", "?", "?");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$result = $dbh->query("SELECT * FROM DATACC");
mysql_set_charset("UTF8");
header('Content-type: text/html; charset=utf-8');
} catch(PDOException $e) {
echo $e->getMessage();
}
echo "<body>";
echo "<table class='bordered'>";
foreach($result->fetchAll() as $row){
echo "<tbody>";
echo "<tr class='alt'>";
echo "<td width='20px'>" . $row["MaCC"] . "</td>";
echo "<td>" . $row["HoVaTen_VN"] . "</td>";
echo "<td>" . $row["NgaySinh"] . "</td>";
echo "<td>" . $row["NoiSinh"] . "</td>";
echo "</tr>";
echo "</tbody>";
}
echo "</talbe>";
echo "</body>";
$dbh = NULL;
?>
&#13;
你可以帮我解决这个问题吗? (我尝试了许多方法来修复此错误,因此仍然失败)。谢谢你!
答案 0 :(得分:0)
您正在使用PDO但同时使用不是PDO的mysql_set_charset
且不会影响您的PDO连接。
而是使用连接字符串到PDO,如:
try {
$dbh = new PDO("mysql:host=localhost;dbname=?;charset=utf8", "?", "?");
...
作为第二个注释:
打开MySQL终端并使用以下命令:
SELECT T.table_name,CCSA.character_set_name
FROM information_schema.`TABLES` T, information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
AND T.table_schema = "<your dbname name>";
确保表格全部以UTF-8编码,因为您需要它们。
答案 1 :(得分:0)
使用PDO设置字符集有一种正确的唯一方法,这是DSN的一部分。
$dbh = new PDO("mysql:host=localhost;dbname=?;charset=utf8", "?", "?");