If you get an error:
"Error while trying to retrieve text for error ORA-12154"
means that you didn't set the ORACLE_HOME, TNS_ADMIN and ORACLE_BASE variable.
If you are sure it's set as a system variable, you could solve the problem by use:
putenv('ORACLE_HOME=/your/oracle/home/beforebin');
dbx_connect
(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, PECL dbx >= 1.1.0)
dbx_connect — 接続/データベースをオープンする
説明
データベースへの接続をオープンします。
パラメータ
- module
-
module パラメータには文字列または定数を設定します。 定数の使用が推奨されます。指定可能な値を以下に示しますが、これは 該当するモジュールが実際にロードされている場合のみ動作することに注意してください。
- DBX_MYSQL あるいは "mysql"
- DBX_ODBC あるいは "odbc"
- DBX_PGSQL あるいは "pgsql"
- DBX_MSSQL あるいは "mssql"
- DBX_FBSQL あるいは "fbsql"
- DBX_SYBASECT あるいは "sybase_ct"
- DBX_OCI8 あるいは "oci8"
- DBX_SQLITE あるいは "sqlite"
- host
-
SQL サーバのホスト。
- database
-
データベース名。
- username
-
ユーザ名。
- password
-
パスワード。
- persistent
-
persistent パラメータに DBX_PERSISTENT を設定すると、持続的接続が作成されます。
host 、database 、 username および password のパラメータを受け付けますが、抽象化されたモジュールの接続関数によっては これらがすべて使われるわけではないこともあります。
返り値
dbx_connect() は成功時にオブジェクト、エラー時に FALSE を返します。接続は確立したもののデータベースが選択できなかった場合には、 接続はクローズされて FALSE を返します。
返される object は 3 つのプロパティを有します。
- database
- 現在選択されているデータベースの名前。
- handle
-
接続されたデータベースの有効なハンドルで、モジュール固有の関数に (必要に応じて)使用されます。
<?php
$link = dbx_connect(DBX_MYSQL, "localhost", "db", "username", "password");
mysql_close($link->handle); // dbx_close($link) の方が良いかもしれません
?> - module
- dbx の内部でのみ使用され、上で述べたモジュール番号を表します。
変更履歴
| バージョン | 説明 |
|---|---|
| 5.0.0 | DBX_SQLITE が追加されました。 |
| 4.3.0 | DBX_OCI8 が追加されました。 |
| 4.2.0 | DBX_SYBASECT が追加されました。 |
| 4.1.0 | DBX_FBSQL が追加されました。 |
例
例1 dbx_connect() example
<?php
$link = dbx_connect(DBX_ODBC, "", "db", "username", "password", DBX_PERSISTENT)
or die("接続できませんでした");
echo "接続に成功しました";
dbx_close($link);
?>
注意
注意: モジュール固有のドキュメントも参照ください。
dbx_connect
06-Dec-2007 07:58
04-Mar-2005 02:50
I have been using dbx for a product at work and the need to use SQLite as a database popped up. However, I couldn't find any references to using it with dbx other than that you could and since SQLite doesn't seem to do the username password thing I was a little confused as to how to use it in dbx.
With a little research it seems that when using dbx_connect you only need to fill in the module name ('DBX_SQLITE') and the database (the file name for the database!) to get it working. e.g.
$link = dbx_connect(DBX_SQLITE, "", "some.db", "", "");
thought someone might find it useful, especially since it no longer required additional dll's in version 5.x
26-Jan-2005 01:44
Pear:DB ist a great Idea, but it`s heavy and slower. I`ve tested dbx and Pear:DB with MySQL 4.0.23_Debian-1-log.
With Pear the Script used around 500 KiB of Memory and needed about 0.15s to 0.25s to complete.
With dbx it used around 80 KiB of Memory and needed around 0.09s to 0.11s to complete!
For ME, dbx is absolutly the best abstraktion around! :-)
Nice Work!!
Sascha Plumhoff
07-Dec-2002 06:18
The advantage that this has over Pear, Adob, and even Eclipse is speed. As some one put elsewhere,
"Yes, there is an advantage: Speed!
ext/dbx is written in C and has to be compiled into PHP. It's just faster then the PEAR classes."
Cheers,
BDKR
22-Feb-2002 02:39
ADOdb seems to be the best db-abstraction library in PHP. It's very fast also. You can get it from ADOdb homepage @ http://php.weblogs.com/adodb/
19-Feb-2002 12:35
The pgsql connecting as nobody if you don't supply a password issue has been solved in CVS.
07-Jan-2002 06:01
Currently to connect to the PostgreSQL backend, you have to supply both a username, and a password or the dbx pgsql module attempts to connect as "nobody".
23-Jul-2001 08:54
Pear::DB seems like a better idea than this. See http://pear.php.net
