Php PDO->;fetchAll()返回远程服务器上的空数组

Php PDO->;fetchAll()返回远程服务器上的空数组,php,mysql,pdo,Php,Mysql,Pdo,基本上,在我的本地主机上,一切正常。 以下是两种环境的php版本: 开发(本地主机):5.5.3 制作:5.3.27 我已经四处寻找了很长一段时间,想找到一个兼容性问题,但运气不好,这是我最后的选择 返回开发中而非生产中请求的数据的代码段: function dbq($query, $array = array()) { $core = Core::getInstance(); $STH = $core->dbh->prepare($query);

基本上,在我的本地主机上,一切正常。 以下是两种环境的php版本:

开发(本地主机):5.5.3

制作:5.3.27

我已经四处寻找了很长一段时间,想找到一个兼容性问题,但运气不好,这是我最后的选择

返回开发中而非生产中请求的数据的代码段:

function dbq($query, $array = array()) {
        $core = Core::getInstance();
        $STH = $core->dbh->prepare($query);
        $sth = $STH->execute($array);
        $res = $STH->fetchAll(PDO::FETCH_OBJ);
        print_r($res);
}
之前已成功建立连接,因此不存在任何问题。 如前所述,'$res'在生产环境中返回空数组

该函数由其他函数调用,例如:

function first() {
    return $this->dbq("SELECT * FROM $this->class 
               ORDER BY id ASC LIMIT 1");       
}

注意:第二个参数用于准备语句,并不总是必需的。

您可以使用
$STH->debugDumpParams()
调试语句。()


编辑:问题是由于MySQL列名区分大小写或不区分大小写,具体取决于操作系统。()

您的大小写错误:

$STH = $core->dbh->prepare($query);
$sth = $STH->execute($array);

对于第二个函数,$sth和$sth

-1不是一样的吗?因为第二个函数很容易被注入,并且破坏了PDO准备语句的概念。为什么要设置PDO::FETCH_OBJ两次?你确定一次还不够吗?我听到你的担忧,但这个功能不受用户输入的影响。(用户将永远无法为该函数设置参数)人们永远无法分辨哪些会受到影响,哪些不会。一些项目不断发展,越来越多的开发人员加入其中,人们无法控制他们的行为。这样的函数必须是防错的,不需要任何无声的考虑。我会的。仍然没有关于我真正问题的实际信息:/非常感谢,我甚至没有想到在旧版本中它会逃脱:)随你怎么说,“$this->class”硬编码确实出了问题,解决了我的问题,必须找到解决办法。有趣。因此,出于某种原因,较旧的PHP无法将
$this->class
识别为类属性。您可以尝试
{$this->class}
或字符串连接。不,找到了真正的问题。。。为这混乱道歉。。。新版本的php或mysql(不完全确定是哪一个)似乎不会对区分大小写大惊小怪。似乎$this->class返回的是大写的类(User),而表是小写的(User)。很抱歉给您带来不便,再次感谢您部分帮助我解决问题:)感谢您的帮助,我的问题已经解决,并且此问题也已在我的代码中解决:)谢谢您的输入!