Database names with '-' must also be enclosed in [].
eg. if $databaseName = "my-database" must be selected as:
mssql_select_db('['.$databaseName.']', $connection);
mssql_select_db
(PHP 4, PHP 5, PECL odbtp:1.1.1-1.1.4)
mssql_select_db — MS SQL データベースを選択する
説明
bool mssql_select_db
( string $database_name
[, resource $link_identifier
] )
mssql_select_db() は、指定したリンク ID が指すサーバの 現在アクティブなデータベースを設定します。
以降の mssql_query() のコールは アクティブなデータベースに対して行われます。
パラメータ
- database_name
-
The database name.
スペースやハイフン("-")、あるいはその他の例外文字を含むデータベース名を エスケープするには、下の例で示すようにデータベース名をブラケットで囲む 必要があります。この手法は、データベースの名前に予約語(たとえば primary)が含まれている場合にも同様に使用する必要があります。
- link_identifier
-
mssql_connect() あるいは mssql_pconnect() が返す MS SQL リンク ID。
リンク ID が指定されない場合、最後にオープンされたリンクが仮定されます。 リンクがオープンされない場合、関数は mssql_connect() がコールされた場合と同様に リンクを確立し、これを使用しようとします。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
例
例1 mssql_select_db() の例
<?php
$conn = mssql_connect('MYSQLSERVER', 'sa', 'password');
mssql_select_db('[my data-base]', $conn);
?>
mssql_select_db
oyoboy
22-Sep-2008 10:00
22-Sep-2008 10:00
edoceo
20-Aug-2008 11:59
20-Aug-2008 11:59
Use of square brackets to enclose the database name is also necessary if the name contains a dot: '.'
e.g.
mssql_select_db('Company.ERP');
Produces the error:
Warning: mssql_select_db(): Sybase: Server message: Could not locate entry in sysdatabases for database 'Company'. No entry found with that name. Make sure that the name is entered correctly. (severity 16, procedure N/A) in
mssql_select_db('[Company.ERP]');
Will select successfully
ifintel
10-Feb-2008 07:15
10-Feb-2008 07:15
mssql_select_db() seems to truncate the databasename at the length of 30 characters. In my example the following error occured:
mssql_select_db("VeryLongDatabaseNameWhichIsReallyLong", $this->dbConn);
Warning: mssql_select_db(): message: Could not locate entry in sysdatabases for database 'VeryLongDatabaseNameWhichIsRea'. No entry found with that na
me. Make sure that the name is entered correctly. (severity 16) in...
A shorter databasename solved this issue.
