php - Codeigniter $query->list_fields() 在具有相同 php 代码的 LINUX 上不返回任何内容

标签 php mysql sql linux codeigniter

我的问题是我正在尝试使用 $query->list_fields() 从 mysql 查询中获取列。

我有一台本地 Windows x64 机器,需要一直使用 PHP 5.4,一切正常,我没有遇到任何问题。然后我转移到 LINUX centOS 服务器,并且在数据库调用时没有任何列被拉回。我已尽我所能在我的本地机器上复制了场景问题,并且它在我的本地机器上没有问题地拉回了字段。奇怪的是,我有一段代码可以为我拉回字段并将其放入一个数组中,它适用于不同的调用,但不是我想要的调用。我已经验证了 sql 调用,它返回了一个结果,这正是我想要的,我已经验证了这一点。

规范如下:

      |  Client                  |   Server
------|--------------------------|-----------------------------
OS    |  Windows x64 Professional|  CentOS release 6.4 (Final)
Apache|  Apache/2.4.4            |   2.2.24
MYSQL |  5.5.32                  |   5.5.33
PHP   |  5.4.16                  |   5.4

我使用的服务器是一个 hostgator 共享计划

这是PHP代码:

private function get_single_result_from_single_row_query(&$table, &$id, &$id_var = 'id')
{
    $query = $this->db->limit(1)->get_where($table, array($id_var => $id));
    if ($query->num_rows === 1)
    {
        $rows = ($query->result_object());
        $cols = $this->get_collumns_as_array($query);
        return $this->table_object_from_cols($cols, $rows[0]);
    }
    else
    {
        return NULL;
    }
}


private function get_collumns_as_array(&$query)
{
    $collumns = array();
    foreach ($query->list_fields() as $field)
    {
        log_message('error', 'col field: '. $field);
        array_push($collumns, $field);
    }
    if(empty($collumns))
    {
        log_message('error', 'collumns is empty'. $field);
    }
    return $collumns;
}

private function table_object_from_cols(&$collumns, &$row)
{
    if ($collumns == NULL || empty($collumns))
    {
        return NULL;
    }
    $table_object = array();
    foreach ($collumns as $col)
    {
        log_message('error', 'row->col : ' . $row->$col);
        $table_object[$col] = $row->$col;
    }
    return $table_object;
}

正如您所看到的,当没有列可以尝试最好地确定原因时,我已经输出了一个错误!并且还应该看到,查询只能继续是行数等于 1

由于我的计划,我显然无法远程调试服务器

基本上我完全被难住了所有的帮助都非常感谢

编辑:我已经尝试从我的函数中删除“&”,但没有任何区别 编辑:我现在在服务器上使用 PHP 5.4

最佳答案

由于 PHP MySQL 客户端 API 库尚未更新(检查phpinfo 即版本 5.1.69)。如果是这种情况,您应该更新它。

关于php - Codeigniter $query->list_fields() 在具有相同 php 代码的 LINUX 上不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19404725/

相关文章:

mysql - MySQL做GROUP BY时自然是 "choose"哪一行?

mysql - 计算的 MYSQL 列

php - PDO 更新准备好的语句不起作用

mysql - 如何在http服务器开始接受请求之前建立mysql2连接?

javascript - Facebook 分享显示主服务器 IP 地址而不是域名

mysql - GROUP BY 和 ORDER BY - 按特定字段排序

mysql - 在 1 行和不同的列中显示结果

c# - 定标器变量问题

php - 如何在wordpress中提供超链接

php - 用于存储具有多个可用选项的项目的 MySQL 数据库结构