10

だから私はアクセスデータベース(* 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に接続しようとしましたが、これはmsaccessを使用した結果のphpです

4

7 に答える 7

2

問題は、デフォルトの IIS IUSER がネットワーク共有を介してファイルにアクセスできないことです。回避策については、 http ://support.microsoft.com/kb/207671 で詳しく説明しています。

アクセス ファイルよりも SQL Server (他に何もない場合でも Express Edition) を使用することを強くお勧めします。エクスペリエンスが大幅に向上し、必要に応じてサイトが拡大するにつれて移行が容易になります。

于 2013-01-21T13:30:51.770 に答える
1
$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);
于 2015-03-07T14:10:11.377 に答える
1

同様の問題についてこのスレッドを見つけました: http://ellislab.com/forums/viewthread/93160/。コントローラーから odbc ドライバーを手動でロードしてみてください:

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

また、何らかの理由でデータベース構成が odbc ドライバーで利用できないことも示しています。

システム/データベース/ドライバー/odbc/odbc_driver.php

そのため、そこに移動してデータベース構成を手動でロードする必要がある場合もあります。

于 2013-01-16T14:40:01.450 に答える
0

PHP プログラムを実行しているユーザーを確認します。チェックする PHP でディレクトリの内容を一覧表示します。PHP を実行しているユーザーも、Z自分のユーザー名で作成されたマッピングを持っていない可能性があることを考慮してください。

于 2013-01-22T19:47:12.700 に答える
0

そのファイルへの読み取り/書き込みアクセスを確認しましたか? PHP アプリが IIS で実行されている場合、コンピュータへのログインに使用するユーザー アカウントではなく、IIS のユーザー アカウントにそのファイルへの読み取り/書き込み権限が必要です。

于 2013-01-16T05:35:22.873 に答える
0

これは機能します:

$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;
于 2015-02-27T21:34:57.093 に答える
0

多くの検索の後 (前述のソリューションからは何も機能しませんでした)、別のソリューションを見つけました。一部の 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 :-(

于 2013-09-01T17:05:20.247 に答える