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

时间:2014-04-07 18:56:18

标签: php mysql pdo

基本上,在我的localhost上一切正常。 这些是两种环境的php版本:

开发(localhost):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");       
}

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

你是大写/小写错误:

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

不是$ sth和$ STH