我有一个php是这样写的:
<?php
require('inc/pdo.php');
$lt=$dbc->prepare(" select b.subject from pre_forum_forum a inner join pre_forum_forum aa on a.fid=aa.fup inner join pre_forum_thread b on b.fid=aa.fid where a.name='你好'");
$lt->execute();
while($row=$lt->fetch()){
print_r($row);
};
?>打开页面是一片空白,本以为是写错了,就换了一个sql语句:
select * from tablename 
这样就正常,请教大神这是为什么?

解决方案 »

  1.   

    这个sql语句已经跑过,没有错!
      

  2.   

    from pre_forum_forum a
    可以直接from a
    a.name='你好'
    有字符集问题。
      

  3.   

    如果pdo 对应的mysql 版本不对,会有这个bug
      

  4.   

    $arr = $lt->errorInfo();
    print_r($arr); //这样看看
      

  5.   

    <?php
    require('inc/pdo.php');
    //$wlt='你好';
    $lt=$dbc->prepare("select b.subject from pre_forum_forum a inner join pre_forum_forum aa on a.fid=aa.fup inner join pre_forum_thread b on b.fid=aa.fid where a.name='你好'");
    //$lt->execute(array($wlt));
    //while($row=$lt->fetch()){
    //print_r($row);
    //};
    $arr = $lt->errorInfo();
    print_r($arr); 
    ?>结果是:
    Array ( [0] => [1] => [2] => )
      

  6.   

    <?php
    require('inc/pdo.php');
    $wlt='你好';
    $lt=$dbc->prepare("select b.subject from pre_forum_forum a inner join pre_forum_forum aa on a.fid=aa.fup inner join pre_forum_thread b on b.fid=aa.fid where a.name=?");
    $lt->execute(array($wlt));
    while($row=$lt->fetch()){
    print_r($row);
    };
    $arr = $lt->errorInfo();
    print_r($arr); 
    ?>结果还是:Array ( [0] => 00000 [1] => [2] => )
      

  7.   

    Array ( [0] => 00000 [1] => [2] => )
    表示没有语法错,但不表示一定有结果
    你的查询条件是中文的,那么就有一个字符集问题
    字符集不对,就查不到了另外就常理而言
    a.name='你好'
    你不觉得有点怪异吗?
      

  8.   

    可能是字符集问题,在prepare前面加上
    $dbc->query('set names utf8');