r00t
V2EX  ›  PHP

PDO 下设置字符集的问题

  •  
  •   r00t · Mar 8, 2016 · 3572 views
    This topic created in 3728 days ago, the information mentioned may be changed or developed.

    <?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");

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

    8 replies    2016-03-08 21:48:05 +08:00
    hxsf
        1
    hxsf  
       Mar 8, 2016   ❤️ 1
    $pdo = new PDO("mysql:host=localhost;dbname=DB;charset=UTF8", DB_USER, DB_PASS);
    Kokororin
        2
    Kokororin  
       Mar 8, 2016   ❤️ 1
    $pdo->exec('set names utf8')
    hxsf
        3
    hxsf  
       Mar 8, 2016
    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
        4
    r00t  
    OP
       Mar 8, 2016
    @hxsf 是 utf8 谢啦
    r00t
        5
    r00t  
    OP
       Mar 8, 2016
    @hxsf Get 到了 ths
    r00t
        6
    r00t  
    OP
       Mar 8, 2016
    @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
        7
    hxsf  
       Mar 8, 2016
    result 是个 PDOStatement 对象啊,语句只是他其中的一个 public 属性,获取数据的话 用 fetch 获取一行 或者 fetchAll 获取全部。
    r00t
        8
    r00t  
    OP
       Mar 8, 2016
    @hxsf 嗯 我再理解理解
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3026 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 03:11 · PVG 11:11 · LAX 20:11 · JFK 23:11
    ♥ Do have faith in what you're doing.