欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

请问使用php的pdo查询出来怎么会是空白?

程序员文章站 2024-01-27 21:00:10
...
我有一个php是这样写的:
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


这样就正常,请教大神这是为什么?

回复讨论(解决方案)

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

求大神啊。。。。

from pre_forum_forum a
可以直接from a


a.name='你好'
有字符集问题。

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

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

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

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

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] => )

把上面的注释全部删掉再试

把上面的注释全部删掉再试

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] => )

Array ( [0] => 00000 [1] => [2] => )
表示没有语法错,但不表示一定有结果
你的查询条件是中文的,那么就有一个字符集问题
字符集不对,就查不到了

另外就常理而言
a.name='你好'
你不觉得有点怪异吗?

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

Array ( [0] => 00000 [1] => [2] => )
表示没有语法错,但不表示一定有结果
你的查询条件是中文的,那么就有一个字符集问题
字符集不对,就查不到了

另外就常理而言
a.name='你好'
你不觉得有点怪异吗?
这个只是数据库起的别名, 问题解决了

我就说有字符集问题。你不听