SQL Server Driver for PHP リファレンス
SQL Server Driver for PHP で実装されている API リファレンスです。 すぐにコードが書けるように、いくつかサンプルコードも含めています。
SQL サーバードライバー for PHP については、 「PHP から MS SQL Server へ接続する方法のまとめとサンプルコード」 にも解説がありますのでご覧ください。
SQL Server Driver for PHP 1.1 リファレンス
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) | ||||||||||||
エラー処理とログ設定を変更します。
| ||||||||||||
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]]) | ||||||||||||
次の行を読み込み可能にします。
| ||||||||||||
sqlsrv_fetch_array( resource $stmt[, int $fetchType [, $row[, $offset]]]) | ||||||||||||
次の行のデータを、数値インデックスの配列または連想配列あるいはその両方として返します。デフォルトは両方です。
| ||||||||||||
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 関数の戻り値として取得できます。 |