所以我用Access数据库(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版本,如果没有别的)比访问文件 - 你会得到一个更完善的服务体验+你将能够仿佛在需要的部位扩展迁移更容易。
我发现这个线程类似的问题: 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['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;
不知道是什么原因,因为我能够使用单斜杠和双斜杠没有工作,认为这是谁制作的同一个人的无聊的玩笑一些Access数据库的(同一服务器,同一文件夹中,相同的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;