Đây thực sự là một lỗi trong CodeIgniter. Trong trình điều khiển ODBC (/system/database/drivers/odbc/odbc_driver.php) khi bạn chọn một bảng, nó sử dụng phương pháp sau:
function _from_tables($tables)
{
if ( ! is_array($tables))
{
$tables = array($tables);
}
return '('.implode(', ', $tables).')';
}
Nó cố gắng nhóm nhiều lựa chọn bảng lại với nhau để thực thi quyền ưu tiên của toán tử, điều này sẽ hoạt động tốt nếu bạn đang sử dụng nhiều hơn một bảng, tuy nhiên với một bảng, nó vẫn cố gắng nhóm lại, điều này gây ra lỗi bạn đang gặp phải.
Thật không may, tôi không tin rằng có thể mở rộng các tệp trình điều khiển này, vì vậy bạn có thể phải chỉnh sửa chính tệp lõi. Hãy lưu ý điều này trong trường hợp bạn cần cập nhật CodeIgniter trong tương lai, bạn sẽ phải thay đổi phương thức thành một cái gì đó giống như sau:
function _from_tables($tables)
{
if ( ! is_array($tables))
{
return strstr($tables, ',') ? '('.$tables.')' : $tables;
}
else
{
return count($tables) > 1 ? '('.implode(', ', $tables).')' : end($tables);
}
}