Codeigniter с использованием базы данных доступа ms

Поэтому я использую базу данных доступа (* mdb). Это мой код и успех для подключения:

$db['test']['hostname'] = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\blabla.mdb'; $db['test']['username'] = ''; $db['test']['password'] = ''; $db['test']['database'] = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\blabla.mdb'; $db['test']['dbdriver'] = 'odbc'; $db['test']['dbprefix'] = ''; $db['test']['pconnect'] = TRUE; $db['test']['db_debug'] = TRUE; $db['test']['cache_on'] = FALSE; $db['test']['cachedir'] = ''; $db['test']['char_set'] = 'utf8'; $db['test']['dbcollat'] = 'utf8_general_ci'; $db['test']['swap_pre'] = ''; $db['test']['autoinit'] = TRUE; $db['test']['stricton'] = FALSE; 

И теперь я хочу использовать accessdb с другого компьютера. Этот accessdb (* mdb) был общим, и я делаю карту сетевого диска (Z :).

Поэтому я изменил имя хоста и базу данных, но не удалось:

 $db['test']['hostname'] = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=Z:\blabla.mdb'; $db['test']['database'] = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=Z:\blabla.mdb'; 

И я пробую это:

 $db['test']['hostname'] = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=\\10.0.0.107\share\blabla.mdb'; $db['test']['database'] = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=\\10.0.0.107\share\blabla.mdb'; 

Но это все еще ошибка:

 Unable to connect to your database server using the provided settings. Filename: D:\folder\folder\system\database\DB_driver.php Line Number: 124 

и даже я пытаюсь подключиться к php, и это результат php, используя msaccess

    Проблема в том, что IIS IUSER по умолчанию не может обращаться к файлам через сетевой ресурс. обходное решение описано здесь: http://support.microsoft.com/kb/207671 .

    Я бы настоятельно рекомендовал использовать SQL Server (Express Edition, если не что иное), чем файл доступа – вы получите значительно улучшенный опыт +, вы сможете легко мигрировать по мере расширения сайта при необходимости.

    Я нашел эту тему для аналогичной проблемы: http://ellislab.com/forums/viewthread/93160/ . Говорит, что вы должны попробовать загрузить загрузку драйвера odbc вручную с вашего контроллера:

     $this->load->database(); $this->db->dbdriver = “odbc”; 

    В нем также говорится, что по какой-то причине конфигурация базы данных недоступна в драйвере odbc:

    системы / базы данных / драйвера / ODBC / odbc_driver.php

    Таким образом, вам также придется зайти туда и вручную загрузить конфигурацию базы данных.

     $db['second']['hostname'] = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:/wamp/www/ket_noi_access/test1.mdb";//C:\wamp\www\ket_noi_access $db['second']['username'] = "ADODB.Connection"; $db['second']['password'] = "xxxxx"; $db['second']['database'] = "C:/wamp/www/ket_noi_access/test1.mdb"; $db['second']['dbdriver'] = "odbc"; $db['second']['dbprefix'] = ""; $db['second']['pconnect'] = TRUE; $db['second']['db_debug'] = TRUE; $db['second']['cache_on'] = FALSE; $db['second']['cachedir'] = ""; $db['second']['char_set'] = "utf8"; $db['second']['dbcollat'] = "utf8_general_ci"; $db['second']['swap_pre'] = ''; $db['second']['autoinit'] = TRUE; $db['second']['stricton'] = FALSE; 

    код

     function __construct(){ parent::__construct(); $this->legacy_db = $this->load->database('second',true); } function LayDanhSach(){ $this->legacy_db->select('*'); $this->legacy_db->from('ban'); $query = $this->legacy_db->get(); $kq=$query->result(); $this->legacy_db->close(); //$this->db->close(); return $kq; } $this->load->model("ban_model"); $ds=$this->ban_model->LayDanhSach(); $st="This is demo multi database and msaccess connect <br>"; $st.=json_encode($ds); $this->data['content']=$st;//json_encode($ds);//echo json_encode($ds); $this->load->view('index_view2',$this->data,false); 

    Вы проверяли доступ для чтения / записи к этому файлу? Если ваше приложение php работает в IIS, ваша учетная запись пользователя IIS должна будет иметь права на чтение / запись для этого файла, а не учетную запись пользователя, которую вы используете для входа на ваш компьютер.

    Проверьте, к какому пользователю работает ваша программа PHP. Список содержимого каталога с PHP для проверки. Учтите, что пользователь, на котором запущен ваш PHP, также не имеет сопоставления Z , сделанного вами под вашим собственным именем пользователя.

    После многих поисков (ничего из этого решения не получилось) я нашел другое решение, в некоторых ms Access db вы можете подключаться только с помощью двойной косой черты в строке подключения (не в пути к базе данных):

     $db['test']['hostname'] = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\\path\\to\my.mdb'; $db['test']['username'] = ''; $db['test']['password'] = ''; $db['test']['database'] = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\path\to\my.mdb'; $db['test']['dbdriver'] = 'odbc'; $db['test']['dbprefix'] = ''; $db['test']['pconnect'] = TRUE; $db['test']['db_debug'] = TRUE; $db['test']['cache_on'] = FALSE; $db['test']['cachedir'] = ''; $db['test']['char_set'] = 'utf8'; $db['test']['dbcollat'] = 'utf8_general_ci'; $db['test']['swap_pre'] = ''; $db['test']['autoinit'] = TRUE; $db['test']['stricton'] = FALSE; 

    не уверен, в чем причина, потому что я смог подключиться к некоторым доступным db (тот же сервер, одна и та же папка, такая же версия Access), используя одиночные косые черты, а двойные слэши не работают, подумайте, что это глупая шутка того же парня, который работал над IE 🙁

    это работает:

     $db['access']['hostname'] = 'DNS name created by me'; // or ip address $db['access']['username'] = ''; $db['access']['password'] = ''; $db['access']['database'] = ''; $db['access']['dbdriver'] = 'odbc'; $db['access']['dbprefix'] = ''; $db['access']['pconnect'] = FALSE; $db['access']['db_debug'] = TRUE; $db['access']['cache_on'] = FALSE; $db['access']['cachedir'] = ''; $db['access']['char_set'] = 'utf8'; $db['access']['dbcollat'] = 'utf8_general_ci'; $db['access']['swap_pre'] = ''; $db['access']['autoinit'] = TRUE; $db['access']['stricton'] = FALSE;