I have noted that mssql_select_db fails if the database name contains a dash or hyphen. for example a database named foo-bar will fail and the error that is returned indicates that the name was interpreted as only 'foo'
(PHP 4, PHP 5, PECL odbtp >= 1.1.1)
mssql_select_db — MS SQL データベースを選択する
この関数は PHP 7.0.0 で 削除 されました。
この関数の代替として、これらが使えます。
$database_name
[, resource $link_identifier
] ) : boolmssql_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
// MSSQL へのリンクを作成します
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
// データベース 'php' を選択します
mssql_select_db('php', $link);
?>
例2 角括弧によるデータベース名のエスケープ
<?php
// MSSQL へのリンクを作成します
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
// データベース 'my.database-name' を選択します
mssql_select_db('[my.database-name]', $link);
?>
I have noted that mssql_select_db fails if the database name contains a dash or hyphen. for example a database named foo-bar will fail and the error that is returned indicates that the name was interpreted as only 'foo'
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