SQL Server Driver for PHP で実装されている API リファレンスです。
すぐにコードが書けるように、いくつかサンプルコードも含めています。
| sqlsrv_begin_transaction(resource $conn) |
トランザクションを開始します。
<?php
$serverName = '.\\SQLEXPRESS';
$connectionInfo = array(
'UID' => 'sa',
'PWD' => 'password goes here',
'Database' => 'Northwind'
);
// Open Connection
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ){
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
// トランザクションの開始
if ( !sqlsrv_begin_transaction($conn) ) {
die( 'Could not begin transaction.' );
}
// クエリの実行とコミット/ロールバック
$params = array( 'Sales Manager', 5);
$tsql =
"UPDATE Employees
SET Title = ?
WHERE EmployeeID = ?";
if( sqlsrv_query( $conn, $tsql, $params ) ) {
sqlsrv_commit($conn);
}
else {
sqlsrv_rollback($conn);
}
// Close Connection
sqlsrv_close($conn);
?>
パラメータの $conn は sqlsrv_connect 関数の戻り値として取得できます。
|
| sqlsrv_cancel(resource $stmt) |
|
ステートメントをキャンセルします。そのステートメントの未処理の結果は破棄されます。
|
| sqlsrv_client_info(resource $conn) |
|
クライアントに関する情報を提供します。
パラメータの $conn は sqlsrv_connect 関数の戻り値として取得できます。
...
// クライアント/サーバー情報の取得と表示
echo "=== Client Info ===\n";
$client_info = sqlsrv_client_info($conn);
if( $client_info ) {
foreach( $client_info as $key => $val ) {
echo "$key - $val\n";
}
}
echo "=== Server Info ===\n";
$server_info = sqlsrv_server_info($conn);
if( $server_info ) {
foreach( $server_info as $key => $val ) {
echo "$key - $val\n";
}
}
...
上記の実行例は以下の通りです。
> php test.php
=== Client Info ===
DriverDllName - sqlncli10.dll
DriverODBCVer - 03.52
DriverVer - 10.00.2531
ExtensionVer - 1.1.428.1
=== Server Info ===
CurrentDatabase - Northwind
SQLServerVersion - 10.00.2531
SQLServerName - KEISUKE-HP\SQLEXPRESS
|
| sqlsrv_close(resource $conn) |
|
コネクションを閉じ、そのコネクションに関連付けされた全てのリソースを解放します。
パラメータの $conn は sqlsrv_connect 関数の戻り値として取得できます。
|
| sqlsrv_commit(resource $conn) |
|
トランザクションをコミットします。
パラメータの $conn は sqlsrv_connect 関数の戻り値として取得できます。
|
| sqlsrv_configure(string $setting, mixed $value) |
エラー処理とログ設定を変更します。
| 設定 | 設定可能な値 | 既定値 |
| WarningsReturnAsErrors |
true (1) false (0)
| true (1)
|
| LogSubsystems |
SQLSRV_LOG_SYSTEM_ALL (-1)
SQLSRV_LOG_SYSTEM_CONN (2)
SQLSRV_LOG_SYSTEM_INIT (1)
SQLSRV_LOG_SYSTEM_OFF (0)
SQLSRV_LOG_SYSTEM_STMT (4)
SQLSRV_LOG_SYSTEM_UTIL (8)
| SQLSRV_LOG_SYSTEM_OFF (0)
|
| LogSeverity |
SQLSRV_LOG_SEVERITY_ALL (-1)
SQLSRV_LOG_SEVERITY_ERROR (1)
SQLSRV_LOG_SEVERITY_NOTICE (4)
SQLSRV_LOG_SEVERITY_WARNING (2)
| SQLSRV_LOG_SEVERITY_ERROR (1)
|
|
| sqlsrv_connect(string $serverName [, array $connectionInfo]) |
コネクションを作成しオープンします。
<?php
$serverName = '.\\SQLEXPRESS';
$connectionInfo = array(
'UID' => 'sa',
'PWD' => 'password goes here',
'Database' => 'Northwind'
);
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ){
echo "Cound not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
|
| sqlsrv_errors |
|
直前の操作に関するエラーあるいは警告を返します。
|
| sqlsrv_execute(resource $stmt) |
|
プリペアドステートメントを実行します。
|
| sqlsrv_fetch(resource $stmt[, $row[, $offset]]) |
次の行を読み込み可能にします。
| row |
- SQLSRV_SCROLL_NEXT
- SQLSRV_SCROLL_PRIOR
- SQLSRV_SCROLL_FIRST
- SQLSRV_SCROLL_LAST
- SQLSRV_SCROLL_ABSOLUTE
- SQLSRV_SCROLL_RELATIVE
|
| offset |
SQLSRV_SCROLL_ABSOLUTE または SQLSRV_SCROLL_RELATIVE の場合に指定します。
|
|
| sqlsrv_fetch_array( resource $stmt[, int $fetchType [, $row[, $offset]]]) |
次の行のデータを、数値インデックスの配列または連想配列あるいはその両方として返します。デフォルトは両方です。
| fetchType |
- SQLSRV_FETCH_NUMERIC
- SQLSRV_FETCH_ASSOC
- SQLSRV_FETCH_BOTH
|
row, offset は sqlsrv_fetch と同様
|
| sqlsrv_fetch_object(resource $stmt [, string $className [, array $ctorParams[, $row[, $offset]]]]) |
次の行のデータをオブジェクトとして返します。
...
$tsql =
"SELECT CustomerID, CompanyName, ContactName
FROM customers
WHERE companyname LIKE 'T%'";
$stmt = sqlsrv_query( $conn, $tsql );
if( !$stmt ) {
die( print_r( sqlsrv_errors(), true));
}
while( $obj = sqlsrv_fetch_object( $stmt )) {
echo "$obj->CompanyName ($obj->ContactName)\n";
}
sqlsrv_free_stmt($stmt);
...
|
| sqlsrv_field_metadata(resource $stmt) |
フィールドのメタデータを返します。
$tsql =
"SELECT CustomerID, CompanyName, ContactName
FROM customers
WHERE companyname LIKE 'T%'";
$stmt = sqlsrv_query( $conn, $tsql );
$metadata = sqlsrv_field_metadata( $stmt );
if( $metadata ){
echo "=== Metadata ===\n";
foreach( $metadata as $key1 => $val1 ){
echo "$key1: $val1\n";
foreach( $val1 as $key2 => $val2){
echo "\t$key2: " .
( $key2 == 'Type'
? my_sqlsrv_type2ename($val2) : $val2 )
. "\n";
}
}
}
...
function my_sqlsrv_type2ename($type){
switch($type){
case 93 : return 'datetime';
case 91 : return 'date';
case 12 : return 'varchar';
case 7 : return 'real';
case 6 : return 'float';
case 5 : return 'smallint';
case 4 : return 'int';
case 3: return 'decimal';
case 2 : return 'numeric';
case 1 : return 'char';
case -1 : return 'text';
case -2 : return 'binary';
case -3 : return 'varbinary';
case -4 : return 'image';
case -5 : return 'bigint';
case -6 : return 'tinyint';
case -7 : return 'bit';
case -8 : return 'nchar';
case -9 : return 'nvarchar';
case -10 : return 'ntext';
case -11 : return 'uniqueidentifier';
case -152 : return 'xml';
case -154 : return 'time';
case -155 : return 'datetimeoffset';
}
return '';
}
上記の実行例は次の通り。
> php test.php
=== Metadata ===
0: Array
Name: CustomerID
Type: nchar
Size: 5
Precision:
Scale:
Nullable: 0
1: Array
Name: CompanyName
Type: nvarchar
Size: 40
Precision:
Scale:
Nullable: 0
2: Array
Name: ContactName
Type: nvarchar
Size: 30
Precision:
Scale:
Nullable: 1
|
| sqlsrv_free_stmt(resource $stmt) |
|
ステートメントを閉じ、そのステートメントに関連付けされた全てのリソースを解放します。
|
| sqlsrv_get_config(string $setting) |
|
特定の設定値を返します。
|
| sqlsrv_get_field(resource $stmt, int $fieldIndex [, int $getAsType]) |
|
現在の行のフィールドをインデックスによって取得します。PHP が返す型を指定可能です。
|
| sqlsrv_has_rows(resource $stmt) |
|
結果セットがひとつかそれ以上の行を持つかどうか検出します。
|
| sqlsrv_next_result(resource $stmt) |
|
次の結果を処理可能にします。
|
| sqlsrv_num_rows(resource $stmt) |
|
結果セットの行数を返します。
|
| sqlsrv_num_fields(resource $stmt) |
アクティブな結果セットのフィールド数を返します。
$tsql =
"SELECT CustomerID, CompanyName, ContactName
FROM customers
WHERE companyname LIKE 'T%'";
$stmt = sqlsrv_query( $conn, $tsql );
echo 'Number of Fields: ' . sqlsrv_num_fields( $stmt ) . "\n"; // 3 が返る
|
| sqlsrv_prepare(resource $conn, string $tsql [, array $params [, array $options]]) |
|
実行せずに Transact-SQL を準備します。暗黙的にパラメータをバインドします。
パラメータの $conn は sqlsrv_connect 関数の戻り値として取得できます。
|
| sqlsrv_query(resource $conn, string $tsql [, array $params [, array $options]]) |
|
Transact-SQL クエリを準備し、実行します。
パラメータの $conn は sqlsrv_connect 関数の戻り値として取得できます。
<?php
$serverName = '.\\SQLEXPRESS';
$connectionInfo = array(
'UID' => 'sa',
'PWD' => 'password',
'Database' => 'Northwind',
'TraceFile' => 'C:/Temp/php-driver-trace.txt',
'TraceOn' => 0
);
$conn = sqlsrv_connect( $serverName, $connectionInfo );
if( $conn === false ){
echo "Cound not connect.\n";
die( print_r( sqlsrv_errors() ) );
}
$tsql =
"SELECT CustomerID, CompanyName, ContactName
FROM customers
WHERE companyname LIKE ?";
$params = array('R%');
$stmt = sqlsrv_query( $conn, $tsql, $params );
if( !$stmt ) {
die( print_r( sqlsrv_errors() ));
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC)) {
echo "$row[1] ($row[2])\n";
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>
上記のコードを test.php とした実行結果例は次の通り。
> php test.php
Rancho grande (Sergio Gutierrez)
Rattlesnake Canyon Grocery (Paula Wilson)
Reggiani Caseifici (Maurizio Moroni)
Ricardo Adocicados (Janete Limeira)
Richter Supermarkt (Michael Holz)
Romero y tomillo (Alejandra Camino)
|
| sqlsrv_rollback(resource $conn) |
|
トランザクションをロールバックします。
パラメータの $conn は sqlsrv_connect 関数の戻り値として取得できます。
|
| sqlsrv_rows_affected(resource $stmt) |
|
変更行(影響のあった行)の数を返します。
|
| sqlsrv_send_stream_data(resource $stmt) |
|
関数呼び出しの度に最大 8 KB のデータをサーバーに送ります。
|
| sqlsrv_server_info(resource $conn) |
|
サーバーに関する情報を返します。
パラメータの $conn は sqlsrv_connect 関数の戻り値として取得できます。
|