2012-03-08 2 views
0

CodeIgniter가 테이블 이름을 대괄호로 묶는 이유를 모르겠습니다. MS SQL 용 CodeIgniter의 ODBC 드라이버를 사용할 때 아래의 오류가 표시되지만 MySql 드라이버를 사용하면 완벽하게 작동합니다. 이 오류가 발생하지 않게하려면 어떻게합니까?codeigniter 및 odbc 연결

A Database Error Occurred 

Error Number: 37000 

[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near ')'. 

SELECT * FROM (ci_sessions) WHERE session_id = '3ad914bb5f5728e8ac69ad1db8fc9841' AND user_agent = 'Mozilla/5.0 (Windows NT 6.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2' 

Filename: D:\wamp\www\IVR_Panel\system\database\DB_driver.php 

Line Number: 330 

나는 또한 그들과 함께 괄호하지만 여전히 오류없이 작동하는 SQL Server 2005에서 동일한 쿼리를 실행하려고했습니다. 나는 ODBC와 MySQL 드라이버를 쉽게 전환 할 수 있도록 활성 레코드를 사용하고 있습니다. 어디에서 괄호를 제거하기 위해 CodeIgniter를 수정할 수 있습니까?

답변

4

이것은 실제로 CodeIgniter의 버그입니다.

function _from_tables($tables) 
{ 
    if (! is_array($tables)) 
    { 
     $tables = array($tables); 
    } 

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

그것은이, 연산자 우선 순위를 적용하기 위해 함께 그룹 다중 테이블 선택에 시도 : 테이블을 선택하면 ODBC 드라이버 (/system/database/drivers/odbc/odbc_driver.php)에서 다음과 같은 방법을 사용합니다 두 개 이상의 테이블을 사용하는 경우에는 잘 작동해야하지만, 하나의 테이블에서는 여전히 그룹화를 시도하여 오류가 발생합니다.

불행히도 이러한 드라이버 파일을 확장하여 코어 파일 자체를 편집해야 할 수도 있습니다. 당신이 미래에 CodeIgniter를 업데이트해야 할 경우이의 메모를 가지고, 당신은 다음과 같이 뭔가 방법을 변경해야합니다 : 그것은 내가 전체 테이블 이름은 데이터베이스를 좋아 추가해야 완벽하고 여기서 일하는

function _from_tables($tables) 
{ 
    if (! is_array($tables)) 
    { 
     return strstr($tables, ',') ? '('.$tables.')' : $tables; 
    } 
    else 
    { 
     return count($tables) > 1 ? '('.implode(', ', $tables).')' : end($tables); 
    } 
} 
+0

감사합니다. schema_name.table_name ... 다시 한 번 감사드립니다. –