<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/faq.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'faq.databases.php',
    1 => 'データベースに関する問題',
    2 => 'データベースに関する問題',
  ),
  'up' => 
  array (
    0 => 'faq.php',
    1 => 'FAQ',
  ),
  'prev' => 
  array (
    0 => 'faq.obtaining.php',
    1 => 'PHP を手に入れるには',
  ),
  'next' => 
  array (
    0 => 'faq.installation.php',
    1 => 'インストール',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'faq/databases.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="faq.databases" class="chapter">
  <h1 class="title">データベースに関する問題</h1>

  

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

  <div class="qandaset"><ol class="qandaset_questions"><li><a href="#faq.databases.mssql">
     
      PHP は Microsoft SQL Server にアクセスできると聞きました。どうすれば
      よいのでしょうか？
     
    </a></li><li><a href="#faq.databases.access">
     Microsoft Access データベースにアクセスできますか？
    </a></li></ol></div>
   <dl class="qandaentry" id="faq.databases.mssql">
    <dt><strong>
     
      PHP は Microsoft SQL Server にアクセスできると聞きました。どうすれば
      よいのでしょうか？
     
    </strong></dt>
    <dd class="answer">
     <p class="para">
      Unix マシン上では、<a href="ref.pdo-odbc.php" class="link">PDO_ODBC</a>
      や <a href="book.uodbc.php" class="link">Unified ODBC API</a> が使えます。
     </p>
     <p class="para">
      Windows マシン上では、<a href="ref.pdo-sqlsrv.php" class="link">PDO_SQLSRV</a>
      や <a href="book.sqlsrv.php" class="link">SQLSRV</a> も使えます。
     </p>
     <p class="para">
      次の質問に対する回答も参照ください。
     </p>
    </dd>
   </dl>

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

  
 </div>
<?php manual_footer($setup); ?>