PDO 下设置字符集的问题

2016-03-08 20:42:24 +08:00
 r00t

<?php
header("Content-type:text/html;charset=utf-8");
try{
//用 pdo 连接数据库
$pdo = new PDO("mysql:host=localhost;dbname=project","root","");
//设置错误处理模式 异常处理错误处理模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}catch(PDOException $e){
echo "数据库连接失败,原因是".$e->getMessage();
}
//查询数据
$result=$pdo->query("select * from user limit 5");

查询到的中文显示问号 求解

3146 次点击
所在节点    PHP
8 条回复
hxsf
2016-03-08 20:53:09 +08:00
$pdo = new PDO("mysql:host=localhost;dbname=DB;charset=UTF8", DB_USER, DB_PASS);
Kokororin
2016-03-08 20:55:10 +08:00
$pdo->exec('set names utf8')
hxsf
2016-03-08 20:55:42 +08:00
php5.3.6+ 应该可以像上面这么写,低版本就像下面写

$db = new PDO('mysql:host=myhost;dbname=mydb', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

顺便 UTF8 不管用就试试小写。或者 utf-8 。。。具体忘了。。
r00t
2016-03-08 20:57:36 +08:00
@hxsf 是 utf8 谢啦
r00t
2016-03-08 20:58:32 +08:00
@hxsf Get 到了 ths
r00t
2016-03-08 21:13:04 +08:00
@hxsf var_dump($result) 后返回这个
object(PDOStatement)[2]
public 'queryString' => string 'select * from user limit 4' (length=26)是什么东东
既然是语句怎么还能获取数据,像这样$list=$result->fetchAll(PDO::FETCH_ASSOC);print_r($list)
hxsf
2016-03-08 21:20:55 +08:00
result 是个 PDOStatement 对象啊,语句只是他其中的一个 public 属性,获取数据的话 用 fetch 获取一行 或者 fetchAll 获取全部。
r00t
2016-03-08 21:48:05 +08:00
@hxsf 嗯 我再理解理解

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/262014

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX