Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

codeigniter e conexões odbc


Este é realmente um bug no CodeIgniter. No driver ODBC (/system/database/drivers/odbc/odbc_driver.php) quando você seleciona uma tabela ela usa o seguinte método:
function _from_tables($tables)
{
    if ( ! is_array($tables))
    {
        $tables = array($tables);
    }

    return '('.implode(', ', $tables).')';
}

Ele tenta agrupar várias seleções de tabela para impor a precedência do operador, isso deve funcionar bem se você estiver usando mais de uma tabela, no entanto, com uma tabela, ele ainda tenta agrupá-la, o que causa o erro que você está recebendo.

Infelizmente, não acredito que seja possível estender esses arquivos de driver, então talvez seja necessário editar o próprio arquivo principal. Tome nota disso caso você precise atualizar o CodeIgniter no futuro, você terá que alterar o método para algo como o seguinte:
function _from_tables($tables)
{
    if ( ! is_array($tables))
    {
        return strstr($tables, ',') ? '('.$tables.')' : $tables;
    }
    else
    {
        return count($tables) > 1 ? '('.implode(', ', $tables).')' : end($tables);
    }
}