2014-12-09 5 views
1

데이터베이스에 '공백'문자가 포함되어 있으면 codeigniter가 데이터베이스에 연결할 수없는 이유를 묻고 싶습니다. 아래는 매력과 같은 연결 작업의 샘플 코드입니다.Codeigniter는 데이터베이스 이름에 공백이 포함 된 데이터베이스를 연결합니다.

$db['posko_db']['hostname'] = 'localhost'; 
$db['posko_db']['username'] = 'root'; 
$db['posko_db']['password'] = ''; 
$db['posko_db']['database'] = 'database'; <---- without spaces 
$db['posko_db']['dbdriver'] = 'sqlsrv'; 
$db['posko_db']['dbprefix'] = ''; 
$db['posko_db']['pconnect'] = FALSE; 
$db['posko_db']['db_debug'] = TRUE; 
$db['posko_db']['cache_on'] = FALSE; 
$db['posko_db']['cachedir'] = ''; 
$db['posko_db']['char_set'] = 'utf8'; 
$db['posko_db']['dbcollat'] = 'utf8_general_ci'; 
$db['posko_db']['swap_pre'] = ''; 
$db['posko_db']['autoinit'] = TRUE; 
$db['posko_db']['stricton'] = FALSE; 

여기에 연결 캔트 나는 많은 방법을 사용하려고, 여전히 작동하지 않는

$db['posko_db']['hostname'] = 'localhost'; 
    $db['posko_db']['username'] = 'root'; 
    $db['posko_db']['password'] = ''; 
    $db['posko_db']['database'] = 'data base'; <---- with spaces 
    $db['posko_db']['dbdriver'] = 'sqlsrv'; 
    $db['posko_db']['dbprefix'] = ''; 
    $db['posko_db']['pconnect'] = FALSE; 
    $db['posko_db']['db_debug'] = TRUE; 
    $db['posko_db']['cache_on'] = FALSE; 
    $db['posko_db']['cachedir'] = ''; 
    $db['posko_db']['char_set'] = 'utf8'; 
    $db['posko_db']['dbcollat'] = 'utf8_general_ci'; 
    $db['posko_db']['swap_pre'] = ''; 
    $db['posko_db']['autoinit'] = TRUE; 
    $db['posko_db']['stricton'] = FALSE; 

작동하는 샘플 코드, 아무도 도울 수 있는가? 덕분에 .

+0

MySQL 데이터베이스에서 작동합니다. –

+0

잠깐만 기다려주세요. –

+0

그것의 MySQL을 위해 일하는 것은 '데이타베이스'와 connecttion이 설립 된 이름으로 데이타베이스를 만드는 것입니다. –

답변

0

데이터베이스 이름, 테이블 이름 또는 필드 이름에 공백이 없어서 다음 코드는 규칙을 초과하므로 절대로 작동하지 않습니다. 그것은 다음과 같이해야한다

$db['posko_db']['database'] = 'data base'; <---- with spaces --> 

,

$db['posko_db']['database'] = 'database'; 
0

이 나를 위해 일했다 : 변경 시스템 \ 데이터베이스 \ 드라이버 \ SQLSRV \

function db_connect($pooling = false) 
{ 
    // Check for a UTF-8 charset being passed as CI's default 'utf8'. 
    $character_set = (0 === strcasecmp('utf8', $this->char_set)) ? 'UTF-8' : $this->char_set; 

    $connection = array(
     'UID'    => empty($this->username) ? '' : $this->username, 
     'PWD'    => empty($this->password) ? '' : $this->password,   
     'ConnectionPooling' => $pooling ? 1 : 0, 
     'CharacterSet'  => $character_set, 
     'ReturnDatesAsStrings' => 1 
    ); 
    // If the username and password are both empty, assume this is a 
    // 'Windows Authentication Mode' connection. 
    if(empty($connection['UID']) && empty($connection['PWD'])) { 
     unset($connection['UID'], $connection['PWD']); 
    } 
      $conn = sqlsrv_connect($this->hostname, $connection); 
      sqlsrv_query($conn,'USE ['.$this->database.']'); 
    return $conn; 
} 

원래 sqlsrv_driver.php :

function db_connect($pooling = false) 
{ 
    // Check for a UTF-8 charset being passed as CI's default 'utf8'. 
    $character_set = (0 === strcasecmp('utf8', $this->char_set)) ? 'UTF-8' : $this->char_set; 

    $connection = array(
     'UID'    => empty($this->username) ? '' : $this->username, 
     'PWD'    => empty($this->password) ? '' : $this->password, 
     'Database'   => $this->database, 
     'ConnectionPooling' => $pooling ? 1 : 0, 
     'CharacterSet'  => $character_set, 
     'ReturnDatesAsStrings' => 1 
    ); 

    // If the username and password are both empty, assume this is a 
    // 'Windows Authentication Mode' connection. 
    if(empty($connection['UID']) && empty($connection['PWD'])) { 
     unset($connection['UID'], $connection['PWD']); 
    } 

    return sqlsrv_connect($this->hostname, $connection); 
} 
관련 문제