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