Mssql 函数
在线手册:中文 英文
PHP手册

mssql_select_db

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_select_dbSelect MS SQL database

说明

bool mssql_select_db ( string $database_name [, resource $link_identifier ] )

mssql_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);
?>

参见


Mssql 函数
在线手册:中文 英文
PHP手册
PHP手册 - N: Select MS SQL database

用户评论:

jack at downeastinternet dot com (28-Oct-2010 08:37)

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'

Ben Ward (06-Sep-2010 12:17)

A way around this if you cannot avoid a long DB name is to create a new db and add views.

eg a database called [abcdefghijklmnopqrstuvwxyzABCDEFG] has a table in it called tblHelloWorld.
To reference this you create a database called [alphabet] and create a view with the following query,

SELECT *
FROM [abcdefghijklmnopqrstuvwxyzABCDEFG].dbo.tblHelloWorld

save this view as tblHelloWorld

not sure if this will work on inserts but it does on select queries.

oyoboy (23-Sep-2008 06:00)

Database names with '-' must also be enclosed in [].

eg. if $databaseName = "my-database" must be selected as:

    mssql_select_db('['.$databaseName.']', $connection);

edoceo (20-Aug-2008 07: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 03: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.