File: databases.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (262 lines) | stat: -rw-r--r-- 12,304 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision: 1.3 $ -->
 <chapter id="faq.databases">
  <title>データベースに関する問題</title>
  <titleabbrev>データベースに関する問題</titleabbrev>

  <para>
   このセクションではPHPとデータベースとの関係に関する一般的な質問を扱
   います。なんと!PHPは事実上あらゆるデータベースにアクセスすることが
   できます。
  </para>

  <qandaset>
   <qandaentry id="faq.databases.mssql">
    <question>
     <para>
      PHPはMicrosoft SQLサーバにアクセスできると聞きました。どうすれば
      よいのでしょうか?
     </para>
    </question>
    <answer>
     <para>
      Windowsマシン上では、ODBCサポートと適切なODBCドライバを使用すれ
      ばよいだけです。
     </para>
     <para>
      Unixマシン上では、Sybase-CTドライバを使ってMicrosoft SQLサーバに
      アクセスすることができます。なぜなら(ほとんど完全に)プロトコル互
      換だからです。Sybaseは<ulink url="&faqurl.sybase;">Linux用のフリー
      な必須ライブラリ</ulink>を作成しました。他のUnixシステムでは適切
      なライブラリを手に入れるためにSybaseと連絡を取る必要があります。
      次の質問に対する回答も参照してください。
     </para>
    </answer>
   </qandaentry>

   <qandaentry id="faq.databases.access">
    <question>
     <para>Microsoft Accessデータベースにアクセスできますか?</para>
    </question>
    <answer>
     <para>
      はい。もし全て(PHPとMicrosoft Access)をWindows9x/Me/NT/2000上で
      動作させるのであり、ODBCとMicrosoftが提供するODBCドライバ for
      Microsoft Accessが使用できる状態ならば、すべての必要なツールは揃っ
      ています。
     </para>
     <para>
      UnixでPHPを動作させてWindowsマシンで操作するMS Accessに接続した
      い場合にはUnix ODBCドライバが必要です。<ulink
      url="&faqurl.openlinksw;">OpenLink Software</ulink>がUnixベース
      のODBCドライバを提供しています。このドライバには無期限の試用版が
      あり、また商用サポートバージョンが675ドル〜
      で提供されています。
     </para>
     <para>
      他には、Microsoft SQLサーバにODBCドライバを使用してデータを保存
      するという手段もあります。これによって、Microsoft Access(ODBCを
      使用します)とPHP(組み込まれているドライバを使用します)でデータに
      アクセスすることができます。また、Microsoft AccessとPHP両者共に
      解釈可能な中間ファイル(例えば単層からなるファイルや、 dBaseデー
      タベース等)を使用する手もあります。これに関してはOpeLink
      SoftwareのTim Hayesが以下のように述べています:
      <programlisting>
       PHPからじかにODBCドライバが使用できる場合(つまりOpenLinkのドラ
       イバを使用している場合)には、他のデータベースを中継手段として用
       いることはよいアイデアとは言えない。どうしても中間ファイルが必
       要な場合のために、OpenLinkはNT, Linux, そして他のUnix用の
       Virtuoso(仮想データベースエンジン)をリリースした。私たちの
       <ulink url="&faqurl.openlinksw;">ウェブサイト</ulink>を訪れても
       らえれば、無料でダウンロードできる。
      </programlisting>
     </para>
     <para>
      うまくいくことが分かってるもう一つの方法はMySQLと、Windows用の
      MyODBCドライバを利用してデータベースを同期する方法です。Steve
      Lawrenceが言うには:
     </para>
     <para>
      <itemizedlist>
       <listitem>
        <simpara>
         MySQLを説明に従って任意のプラットフォームにインストールします。
         最新バージョンは<ulink
         url="&faqurl.mysql;">www.mysql.com</ulink>(ミラーを使うこと!)
         にあります。データベースを作成するとき、そしてユーザアカウン
         トを設定するときに、ホストフィールドに%か、MySQLを使ってアク
         セスするWindowsマシンのホスト名を入力する、ということ以外には
         特別な設定は必要ありません。
        </simpara>
       </listitem>
       <listitem>
        <simpara>
         MySQLサイトからWindows用MyODBCドライバをダウンロードします。
         最新のリリースはmyodbc-2_50_19-win95.zipです(NT版、ソースコー
         ドも入手可能です)。これをWindowsマシンにインストールします。
         アーカイブに含まれるユーティリティプログラムでテストを行うこ
         とができます。
        </simpara>
       </listitem>
       <listitem>
        <simpara>
         コントロールパネルのODBC administratorを使用してユーザ、もし
         くはシステムDSNを作成します。DSN名を決定して、Step1でMySQLに
         設定したホスト名、ユーザ名、パスワード、ポート等を入力します。
        </simpara>
       </listitem>
       <listitem>
        <simpara>
         Accessをフルインストールでインストールします。これは適切なア
         ドインをインストールするためです。少なくともODBCサポートとリ
         ンクテーブルマネージャが必要です。
        </simpara>
       </listitem>
       <listitem>
        <simpara>
         ここからがお楽しみです。新規データベースを作成しましょう。テー
         ブルウィンドウで右クリックしてリンクテーブルを選択します。も
         しくはファイルメニューから外部データの取り込みを選びリンクテー
         ブルを選択します。ファイルブラウザが表示されたらファイルタイ
         プからODBCを選択します。次にシステムDSNを選択肢STEP3で作成し
         たDSN名を選択します。リンクするテーブルを選んでOKボタンを押し
         ましょう。MySQLサーバでテーブルのオープンをオープンできるよう
         になっていて、データの追加/削除/編集ができるようになっていま
         す。さらに、クエリの構築、テーブルのインポート/エクスポート、
         フォームやレポートの構築等が可能です。
        </simpara>
       </listitem>
      </itemizedlist>
     </para>
     <para>
      Tips and Tricks(役に立つヒント):
      <itemizedlist>
       <listitem>
        <simpara>
         Accessでテーブルを作成してそれをMySQLへエクスポートします。そ
         れを再度アクセスからリンクすれば素早くテーブルを作成すること
         ができます。
        </simpara>
       </listitem>
       <listitem>
        <simpara>
         Accessでテーブルを作成するときは、そのテーブルに書き込み権限
         をもたせるためにプライマリキーを設定しておく必要があります。
         Accessとテーブルをリンクする前にMySQLにプライマリキーを設定し
         ておくことも忘れないでください。
        </simpara>
       </listitem>
       <listitem>
        <simpara>
         MySQL側でテーブル(の構成)を変更した場合、再度Accessとリンクす
         る必要があります。ツール>アドイン>リンクテーブルマネージャか
         ら適切なODBC DSNを選んで再リンクが必要なテーブルを選択します。
         また、ここでOKボタンを押す前に「リンク先を更新するためのプロ
         ンプトを毎回表示する」をチェックしておけばDSNソースを移動させ
         ることができます。
        </simpara>
       </listitem>
      </itemizedlist>
     </para>
    </answer>
   </qandaentry>

   <qandaentry id="faq.databases.upgraded">
    <question>
     <para>
      PHP 4にアップグレードしたら、mysqlサーバが"Warning: MySQL:
      Unable to save result set in ..."という警告をしつづけます。何が
      起こっているのでしょうか?
     </para>
    </question>
    <answer>
     <para>
      一番に考えられるのはPHP 4を、MySQLへのパス指定なしに'--
      with-mysql'オプションをつけてコンパイルしたという場合です。これ
      はPHPが組み込まれたMySQLクライアントライブラリを使用するというこ
      とを意味します。もしあなたのシステムで、PHP 3やauth-mysqlの
      apacheモジュールといった他のバージョンのMySQLクライアントを使用
      するアプリケーションが同時に動作している場合には、各クライアント
      間でバージョンの競合が発生してしまいます。
     </para>
     <para>
      PHP 4を'<link
      linkend="install.configure.with-mysql">--with-mysql=/your/path/to/mysql</link>'
      というようにオプションにパスを記述して再コンパイルすることで通常
      の場合は問題は解決されます。
     </para>
    </answer>
   </qandaentry>
   
   <qandaentry id="faq.databases.shared-mysql">
    <question>
     <para>
      共有MySQLサポートをインストールしたら、libphp4がロードされると同
      時にApacheがコアダンプします。直りますか?
     </para>
    </question>
    <answer>
     <para>
      もしあなたのシステムのMySQLライブラリがpthreadsとリンクされてい
      る場合にはこの現象が発生します。lddコマンドを使用してチェックし
      てください。もしpthreadsがリンクされている場合は、MySQLのtarball
      を展開してソースからコンパイルしなおしてください。もしくはSRPMの
      SPECファイルのスレッドクライアントコードの箇所を削除してコンパイ
      ルしなおしてください。いずれかの方法で問題を解決できます。その後、
      PHPを新しいMySQLライブラリでコンパイルしなおしてください。
     </para>
    </answer>
   </qandaentry>

   <qandaentry id="faq.databases.mysqlresource">
    <question>
     <para>
      なぜこのようなエラーがでるのでしょうか?: "Warning: 0 is not a MySQL
      result index in &lt;file&gt; on line &lt;x&gt;" もしくは "Warning: Supplied argument
      is not a valid MySQL result resource in &lt;file&gt; on line &lt;x&gt;? 
     </para>
    </question>
    <answer>
     <para>
      あなたは値が0である結果(result)IDを指定しようとしています。0はあ
      なたのクエリが何らかの理由で失敗したことを示しています。応答
      (result)IDを使用する前に、クエリを送信したあとのエラーをチェック
      する必要があります。以下のようなコードが正しい方法です。
      <programlisting>
$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
    echo mysql_error();
    exit;
}
      </programlisting>
      もしくは
      <programlisting>
$result = mysql_query("SELECT * FROM tables_priv")
    or die("Bad query: ".mysql_error());
      </programlisting>
     </para>
    </answer>
   </qandaentry>
  </qandaset>
 </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->