我的问题是我正在尝试使用 $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