1

何だか忙しくなってきたぁ! こんばんは、HKです。 開発環境で一般的なものといえばLAMPといわれる「Linux」+「Apache」+「MySQL」+「PHP」 これなんですが、ちょっとわけアリでこのLAMP環境からWindowsサーバーにあるMSSQLServerへアクセスする必要が出てきました。 ただ、今のところ開発環境が整っていないので、とりあえずWindowsサーバーのApache+PHPから、同サーバー上にあるMSSQLServer(以下SQLServer)へ接続を試してみました。 参考にさせて頂いたサイトはコチラになります。 始めにWindowsへSQLServerをインストール。 SQLServerは基本的に有償なのですが、開発向けに機能を制限した無償ものがある(SQL Server 2005 Express Edition)ので、これを利用。正確には管理機能を盛り込んだwith Advanced Servicesってやつです。 サックリ全部インストールするのですが、途中迷うのがWindows認証と混合認証のどちらにするか。これは後で設定を変えられるので、まずはWindows認証で問題ないと思います。 SQLServerのインストールが完了したら、php.iniファイルをちょっといじります。コメントアウトされているものを外してやります。extension = php_mssql.dllwindows認証の場合ON、混合認証の場合OFFmssql.secure_connection = On あと、ntwdblib.dllというのが必要となるのですが、PHPに含まれているものはバージョンが古く、エラーを吐くらしいです。詳しいことは参考にしたサイトをご覧下さい。 設定が完了したらApacheを再起動。 早速接続実験。ちなみにWindows認証ではなく混合認証で、SQLServer認証です。SQLServerにテスト用のDBを作っておくのを忘れずに。ここらへんも参考にさせていただいたサイトに詳しく載っています。(何という他人任せw)//---------------------------------------$host = '[hostname]\SQLEXPRESS';$user = '[username]';//私はとりあえずsaで接続してみました$pass = '[pass]';$dbname = '[dbname]';//事前に作ったDB//コネクション$con = mssql_connect($host,$user,$pass);//$con = mssql_connect($host);if ($con === false) { var_dump($con); exit();}else{ echo 'connect OK!\n';}//DB指定if (!mssql_select_db($dbname, $con)) { var_dump($con); exit();}else{ echo 'select db OK!\n';}var_dump($con);//DBクローズmssql_close($con);//--------------------------------------- こんな感じ。 成功したらあとはSQL投げたりストアドプロシージャを実行してみたりするといいです。 が!実は私、PDOを利用して接続したいんです~ 今日ずっとアレコレ試していたのですが、なかなか上手くいきませんでした|||orz 明日こそはPDO接続してやる!(今日は覚書きな感じでスイマセンw)
2008.05.21
閲覧総数 442
2

DBを眺めていると「tinyint(4)」という定義を見つけた。 これは・・・0~4までという意味で定義したのか、それとも0000~9999という意味で定義したのか、それとも0000~1111という意味で・・・ でもtinyintは-128~127しか入らないはず。 そもそも隣の数値の意味は~・・・ 気になったので実験。(ついでにintも試してみました。)--テスト用テーブル作成--mysql> create table `test_tbl` (`ti` tinyint(4),`ni` int(11));Query OK, 0 rows affected (0.02 sec)mysql> desc test_tbl;+-------+------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+-------+------------+------+-----+---------+-------+| ti | tinyint(4) | YES | | NULL | || ni | int(11) | YES | | NULL | |+-------+------------+------+-----+---------+-------+2 rows in set (0.01 sec)--tinyintに4桁の数値、intに11桁の数値を入れてみる--mysql> insert into test_tbl values(1234,12345678901);Query OK, 1 row affected, 2 warnings (0.01 sec)ぉ?warnings吐いてる。--テーブルの中身を見てみる--mysql> select * from test_tbl;+------+------------+| ti | ni |+------+------------+| 127 | 2147483647 |+------+------------+1 row in set (0.01 sec) 各型の最大値に丸められてます。 tinyint:1234=>127 int:12345678901=>2147483647 この型の隣にある数値の意味について誤解されている事が多いし、自分もよく混乱する上にちゃんと分かってない。 原因はcharやvarcharでの桁数指定がこれと同じ記述である事や、tinyint(1)を指定するとbit扱いし、0と1しか入れられなくできる設定が大きい。 マニュアルには以下のような記述がある。--引用--このオプションの表示幅の指定は、カラムに指定された幅より小さい幅を持つ値で表示の左側を埋める目的で使用されますが、そのカラムに格納できる値の範囲が制限されたり、そのカラムに指定された幅を超える幅を持つ値の桁数が制限されたりすることはありません。-------- 読んでも正直パッとしません。ただ、この数値指定によって桁数制限されるわけではない、ということは分かります。 では、こちらはどうでしょう--引用--この表示幅オプションは、カラムに指定された幅よりも小さい幅の整数値を表示する際に左側をスペースで埋めるために使用されます。この表示幅は、カラムに格納する事ができる値の範囲も、カラムに指定された幅を超える値の表示される桁数も制限しません。例えば、SMALLINT(3) として指定されたカラムは、通常の -32768 から 32767 の SMALLINT 範囲を持ち、そして、3文字で許容された範囲外の値は3文字以上の文字を使って表示されます。-------- 何やら急に分かりやすい表現になっています。 引用前者はMySQL4.1のもので、後者はMySQL5.1のものです。初めから5.1の説明を読んでいればすぐ分かりますね。 という事は、tinyint(4)は4桁よりも小さい数値は足りない桁にスペースが入って表示される。扱う桁の制御を行うものではない。 が正しい解釈? きっと私のように混乱していた人も多いかと。 ちょっと自信無いですが、あっているはずっ! 間違ってたらツッコミお願いしますorz
2009.03.24
閲覧総数 41839
3

---エクスポート---1:アイコンダブルクリック2:左のツリーメニューの「設定」をクリック3:「環境設定」ボタンが表示されるのでクリック4:環境設定ウィンドウが表示されるので、左下にある「エクスポート」ボタンをクリック5:「WinSCP.ini」という名前で保存 エクスポートはこれで完了。 インポートも似たような手順でやるんだと思ってたら、どこを探してもインポートボタンがない! 以下の方法で設定を移せました。---インポート---1:アイコンダブルクリック2:左のツリーメニューの「設定」をクリック3:「環境設定」ボタンが表示されるのでクリック4:環境設定ウィンドウが表示されるので、左のツリーメニューにある「保存」をクリック5:「設定の保存」という項目があるので、 ○レジストリ(G) ●INI file (WinSCP.ini) ←こっちを選択6:OKボタンを押して一旦ウィンドウを閉じる。7:WinSCPのインストールフォルダを開く(私の場合は「C:\Program Files\WinSCP」でした)8:そのフォルダにWinSCP.iniファイルが存在するので、エクスポートしたWinSCP.iniファイルでそれを上書きする。9:WinSCPを立ち上げると設定が移植されている!ハズ
2009.04.01
閲覧総数 8768


