mssql 2005 に接続するための php チュートリアル 1. 次の 2 つのファイルをダウンロードし、php ext ディレクトリと system32 に置きます
php_sqlsrv_52_ts_vc6.dll (スレッドセーフ)
php_sqlsrv_52_nts_vc6.dll (スレッドセーフではありません)
vc6はApacheに使用され、vc9はiisに使用されます
2.php.iniを変更する
拡張子=php_sqlsrv_52_ts_vc6.dll
3. Microsoft から正式に入手可能な sqlncli.msi をダウンロードします
インストール時にSQL Server 2008と表示されますが、2005でも使用可能です。
4. テストコード
$サーバー名 = "127.0.0.1";
$connectioninfo = array("database"=>"testdb","uid"=>"test","pwd"=>"test");
$conn = sqlsrv_connect($servername, $connectioninfo);if($conn) {
echo "接続が確立されました。
";
} その他 {
echo "接続を確立できませんでした。
";
Die(print_r(sqlsrv_errors(), true));
exit();
}$sql = "select * from t_employee";
$result = sqlsrv_query($conn,$sql);
$data = array();
while($row=sqlsrv_fetch_array($result)) {
$data[] = $row;
}foreach($data as $p) {
echo $p['name']."
";
}sqlsrv_close($conn);
エコー「
完了
」;
echo date("y-m-d h:i:s");?>
mysqlチュートリアル接続クラス
クラス db_handle {
var $classname = "db_handle";
var $server;
var $ユーザー名;
var $パスワード;
var $database;
var $linkid = 0;
var $queryresult = "";
var $lastinsertid = "";
/* privateignore=>エラーを無視して続行、halt=>エラーを報告して停止、report=>エラーを報告して続行 */
var $halt_on_error = "レポート";
var $error = "";
var $errno = 0;
/**公開
* 注: これは db_mysql_class の構造です
* 関数: サーバー、ユーザー名、パスワード、データベース変数を設定します。
*/
function db_handle($server = "", $username = "", $password = "", $database = "") {
$this->server = $server;
$this->ユーザー名 = $ユーザー名;
$this->password = $password;
$this->database = $database;
}
/**公開
* 機能: データベースに接続し、データベースを選択します
* 成功: 1 を返します
* 失敗: 0 を返す
*/
関数 connect() {
$this->linkid = @mssql_pconnect ( $this->サーバー、$this->ユーザー名、$this->パスワード );
if (! $this->linkid) {
$this->halt ( "mssql_pconnect($this->サーバー,$this->ユーザー名,$this->パスワード): 失敗しました" );
0 を返す;
}
if (! @mssql_select_db ( $this->database )) {
$this->halt ( "mssql_select_db($this->データベース) が失敗しました。" );
0 を返す;
}
1 を返します;
}
/**公開
* 関数: データベースを確認し、存在する場合は選択します
* 存在: 1 を返します
* 存在しない場合は 0 を返します
*/
関数 selectdatabase() {
if (@mssql_select_db ( $this->database ))
1 を返します;
それ以外
0 を返す;
}
/**公開
* 関数: SQL 命令を実行します
* 成功: SQL 結果を返します。
* 失敗しました: 0 を返します;
*/
function execquery($sql = "") {
$this->connect();
if ($this->linkid == 0) {
$this->halt ( "SQL の実行に失敗しました: 有効なデータベース接続がありません。" );
0 を返す;
}
ob_start();
$this->queryresult = mssql_query ( $sql, $this->linkid );
$error = ob_get_contents ();
ob_end_clean ();
if ($error) {
$this->halt ( "SQL の実行: mssql_query($sql,$this->linkid) が失敗しました。" );
0 を返す;
}
$reg = "#insert into#";
if (preg_match ( $reg, $sql )) {
$sql = "ID として @@identity を選択";
$res = mssql_query ( $sql, $this->linkid );
$this->lastinsertid = mssql_result ( $res, 0, id );
}
$this->クエリ結果を返す;
}
/**公開
* 関数: クエリ結果の行番号を取得します
* 成功: 結果の行を返します
* 失敗: 0 を返す
*/
function gettotalrownum($result = "") {
if ($result != "")
$this->queryresult = $result;
$row = @mssql_num_rows ( $this->queryresult );
if ($row >= 0)
$row を返します;
$this->halt ( "結果の行の取得に失敗しました: 結果 $result が無効です。" );
0 を返す;
}
/**公開
* 関数: 最後の挿入レコードの ID を取得します
* 成功: ID を返します
* 失敗: 0 を返す
*/
関数 lastinsertid() {
$this->lastinsertid;を返す
}
/**公開
* 関数: フィールドの値を取得します
* 成功: フィールドの戻り値
* 失敗: 0 を返す
*/
関数 getfield($result = "", $row = 0, $field = 0) {
if ($result != "")
$this->queryresult = $result;
$fieldvalue = @mssql_result ( $this->queryresult, $row, $field );
if ($fieldvalue != "")
$fieldvalue を返します;
$this->halt ( "フィールドの取得: mssql_result($this->queryresult,$row,$field) が失敗しました。" );
0 を返す;
//ここにエラーハンドルがあるはずです
}
/**公開
* 関数: 次のレコードを取得します
* 成功: レコードの値の配列を返します
* 失敗: 0 を返す
*/
function nextrecord($result = "") {
if ($result != "")
$this->queryresult = $result;
$record = @mssql_fetch_array ( $this->queryresult );
if (is_array ( $record ))
$record を返します;
//$this->halt("次のレコードの取得に失敗しました。結果 $result は無効です。");
0 を返す;
}
/**公開
* 関数: クエリ結果を解放します
*成功リターン1
* 失敗: 0 を返す
*/
関数 freeresult($result = "") {
if ($result != "")
$this->queryresult = $result;
return @mssql_free_result ( $this->queryresult );
}
/**公開
* 関数: halt_on_error の状態を設定します
* 成功: 1 を返します
* 失敗: 0 を返す
*/
function sethaltonerror($state = "ignore") {
if (! ($state == "無視" || $state == "レポート" || $state == "停止")) {
$this->halt ( "halt_on_error の設定に失敗しました: 状態値 $state がありません" );
0 を返す;
}
$this->halt_on_error = $state;
1 を返します;
}
/**公開
* 関数: halt_on_error の状態を取得します
*/
関数 gethaltonerror() {
return $this->halt_on_error;
}
/**公開
* 関数: クラスの名前を取得します
*/
関数 tostring() {
$this->クラス名を返す;
}
/**プライベート
* 関数: エラーハンドル
*/
関数停止($msg) {
$this->error = @mysql_error ( $this->linkid );
$this->errno = @mysql_errno ( $this->linkid );
if ($this->halt_on_error == "無視")
戻ります;
$this->makemsg ( $msg );
if ($this->halt_on_error == "停止")
die (「セッション停止」);
}
/**プライベート
* 機能: エラー情報を作成して印刷します
*/
関数 makemsg($msg) {
printf ( "データベース エラー: %sn", $msg );
printf ( "mysql エラー: %s (%s)n", $this->errno, $this->error );
}
}