前提条件 Visual Studio をインストール時にインストールされた SQLExpress の 設定は以下を参考にして下さい SQLExpress 2005 の接続設定 単独でダウンロードしてインストールした場合は、上記ページと以下を参考にして下さい SQLExpress 2005 のインストールから最速設定 その上で以下よりデータとスクリプトをダウンロードしてテーブルを作成して下さい VBS : SQLExpress(SQLServer) に 販売管理B を作成する 上記販売管理Bの社員マスタには、生年月日が無いので以下の SQL を実行して下さい
alter table [社員マスタ] add [生年月日] DATETIME
概要 PHP でデータベースにアクセスする場合、PDO を使用すると接続部分を変更するだけで、 一般的な処理ならば他のDBでも同じコードで済むというメリットがあります。 ただ、PHP は フリーソフトなので、データベースに対する対応については、利用する側 が十分に考察する必要があります。 PDO の SQLServer に対する見解として、オンラインマニュアルで以下のような記述を 見る事ができます
Windows では、Microsoft SQL Server や Sybase データベースにアクセスする際には PDO_ODBC ドライバを使用すべきです。 Windows 版のネイティブの DB-LIB は時代遅れになっており、 スレッドセーフではない上に Microsoft にもサポートされていません。
要するに、PDO で SQLExpress で接続する場合は ODBC を使えという事です。 実際問題として、Windows では COM を使っても十分動きますし、SQLServer 特有の 処理は、おそらく SQL-DMO を COM 経由で処理すると動くと思いますし、一般的 な処理であれば、ODBC を使うのが最も安全でしょう
<?
$strDriver = "{SQL Native Client}";
$strTarget = "NIGHT_TCP"; // 別名
$strDB = "lightbox";
$strUser = "sa";
$strPass = "passwordpassword";
// **********************************************************
// Windows 用動的ロード
// **********************************************************
if ( !extension_loaded( "pdo" ) ) {
dl("php_pdo.dll");
}
if ( !extension_loaded( "pdo_odbc" ) ) {
dl("php_pdo_odbc.dll");
}
// **********************************************************
// 接続
// **********************************************************
$Cn = new PDO(
"odbc:Driver=$strDriver;Server=$strTarget;" .
"Database=$strDB;Uid=$strUser;Pwd=$strPass;");
$Cn2 = new PDO(
"odbc:Driver=$strDriver;Server=$strTarget;" .
"Database=$strDB;Uid=$strUser;Pwd=$strPass;");
$Query = "select * from [社員マスタ]";
// **********************************************************
// レコードセット
// ※ メタデータは取得できませんでした
// **********************************************************
$handle = fopen( ".\\社員マスタ.csv", "w" );
$Rs = $Cn->Query( $Query );
$nFields = $Rs->columnCount();
$hbuffer = "";
$update_cnt = 0;
while( $result = $Rs->fetch(PDO::FETCH_ASSOC) ) {
if ( $hbuffer == "" ) {
$field_names = array_keys($result);
for( $i = 0; $i < $nFields; $i++ ) {
if ( $hbuffer != "" ) {
$hbuffer .= ",";
}
$hbuffer .= $field_names[$i];
}
fwrite( $handle, $hbuffer . "\n" );
}
$buffer = "";
for( $i = 0; $i < $nFields; $i++ ) {
if ( $buffer != "" ) {
$buffer .= ",";
}
$buffer .= $result[$field_names[$i]];
}
fwrite( $handle, $buffer . "\n" );
// 更新( 別接続 )
$day = ($update_cnt % 5) + 1;
$Query = "update [社員マスタ] set [生年月日] = '2005/01/0$day'";
$Query .= " where [社員コード] = '{$result['社員コード']}'";
$Cn2->exec( $Query );
// false がエラーです。 0 は、実行が成功しても対象が無かった場合に返ってきます
// ですから、if ( !$ret ) は正しくありません
if ($ret===false) {
print_r( $Cn->errorInfo() );
}
$update_cnt++;
}
// **********************************************************
// ファイルクローズ
// **********************************************************
fclose( $handle );
// **********************************************************
// 接続解除
// **********************************************************
$Cn2 = null;
$Cn = null;
?>
|
|
【SQLExpressの最新記事】
- SQLServer の BCP で INT IDENTITY 列に csv からリストアする
- VBScript : ADO : ODBC接続 : SQLExpress(SQLServer) 接続と通常処理( 更新は SQL で行う )
- Microsoft SQLExpress : sa に空のパスワードを設定する方法
- SQLExpress バッチ DB バックアップ
- C# : VB.net : SQLExpress(SQLServer) : SQL-DMO と同等の SMO によるバックアップ
- 各RDBMS の正規表現の実装状況 : MySQL, SQLServer, PostgreSQL, Oracle
- SQLServer の OPENDATASOURCE 関数による Excel の参照( Microsoft.Jet.OLEDB.4.0 と Microsoft.ACE.OLEDB.12.0 )
- SQLServer(SQLExpress) : SQL学習用販売管理データとインポート用スクリプト
- SQLExpress 2005( および 2008 ) の接続設定
- SQLExpress 内に存在する表の CREATE 文を取得する
- ファイルから直接データベースを別のPCでリストアする / SQLExpress
- 目的のDBが使用している物理ファイルのパスの確認 / SQLExpress
- ピンポイントですが、SQLServer 2008 は SQLServer 7.0 のデータをロード出来ないのです
- SQLExpress2005 で副問い合わせを含む VIEW が異常終了しました
- VBS : SQLServerよりExcel へエクスポート(Excel製品は必要ありません)
- SQLServer のドキュメント
- VBS : SQLExpress(SQLServer) テーブルの正しい CREATE 文を取得する
- PHP : SQLExpress(SQLserver) : COM による接続処理
- ODBC 用 JDBC : 動的接続 / SQLExpress(SQLServer) / 読み込みながらの行更新
- VBScript : ADO : 純正接続 : SQLExpress(SQLServer) 接続と通常処理






