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 - Manual: mssql_select_db
2024-11-15
(PHP 4, PHP 5, PECL odbtp >= 1.1.1)
mssql_select_db — Select MS SQL database
This function was REMOVED in PHP 7.0.0.
Alternatives to this function include:
$database_name
[, resource $link_identifier
] ) : boolmssql_select_db() sets the current active database on the server that's associated with the specified link identifier.
Every subsequent call to mssql_query() will be made on the active database.
database_name
The database name.
To escape the name of a database that contains spaces, hyphens ("-"), or any other exceptional characters, the database name must be enclosed in brackets, as is shown in the example, below. This technique must also be applied when selecting a database name that is also a reserved word (such as primary).
link_identifier
A MS SQL link identifier, returned by mssql_connect() or mssql_pconnect().
If no link identifier is specified, the last opened link is assumed. If no link is open, the function will try to establish a link as if mssql_connect() was called, and use it.
成功时返回 TRUE
, 或者在失败时返回 FALSE
。
Example #1 mssql_select_db() example
<?php
// Create a link to MSSQL
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
// Select the database 'php'
mssql_select_db('php', $link);
?>
Example #2 Escaping the database name with square brackets
<?php
// Create a link to MSSQL
$link = mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi');
// Select the database '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
官方地址:https://www.php.net/manual/en/function.mssql-select-db.php