使用PDO在php中从MySQL DB获取损坏的数据

3
这是我在phpstorm中的代码。
MySQL数据库中student表中的Fname是一个包含波斯字符的varchar字段。我将数据库排序规则设置为UTF8,但是这段代码仍然返回"??? ???"作为结果。
在使用它时有什么问题?
<?php
$conn = new PDO("mysql:host = localhost;dbname=university;charset = utf8","root","");
$query = "SELECT * FROM student WHERE status = 1";
$result = $conn->query($query);
while($row = $result->fetch(PDO::FETCH_ASSOC)){
    echo $row['Fname'],"<br>";
}
?>
1个回答

1

尝试

$conn = new PDO("mysql:host=localhost;dbname=university;charset=utf8","root","",
                array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

替代

$conn = new PDO("mysql:host = localhost;dbname=university;charset = utf8","root","");

这是一个错误信息:“在非对象上调用成员函数fetch()”。 - ramin_b
@raminbadri 将数据库名称从 test 更改为 university。我也已经更新了我的答案。 - Muhammad Hassaan
哦,我忘了……我还需要在我的HTML标签中加入这个:"<meta charset="utf-8";>"……现在它可以工作了,谢谢。 - ramin_b
你能告诉我我的第一段代码有什么问题吗?为什么它没有运行? - ramin_b
1
@ramin_b,您没有向数据库发送SET NAMES 'utf8'命令。在查询UTF8字符之前,您必须先执行SET NAMES 'utf8'。如果您觉得我的回答有用,请为我投票支持。 - Muhammad Hassaan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接