2014-12-09 2 views
1

Я хочу спросить, почему codeigniter не подходит для базы данных, если база данных содержит символ «пробелы», ниже пример кода, который работает как шарм.База данных Codeigniter connect, содержащая пробелы в имени базы данных

$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 с именем «база данных» и установлено соединение. –

ответ

0

В имени базы данных, имени или имени поля не разрешено использовать пробелы, поэтому следующий код никогда не будет работать, потому что это превышение правила.

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

Это должно быть так,

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

Это работает для меня: Изменение системы \ базы данных \ Drivers \ SQLSRV \ 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,   
     '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; 
} 

Оригинал:

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); 
} 
Смежные вопросы