<?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 => 'zh',
  ),
  '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' => 'zh',
    '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> 来访问 Microsoft SQL Server 数据库。
    </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> 来访问 Microsoft SQL Server 数据库。
    </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">
     另外一个替代方案是用带 Windows ODBC 
     驱动的 SQL Server 并用它来储存数据，
     可以通过 Microsoft Access（用 ODBC）和 PHP（用内置驱动）来访问，
     或者用一个 Access 和 PHP 都识别的中间文件格式，
     例如 flat 文件或者 dBase 数据库。
     关于这一点 OpenLink Software 的 Tim Hayes 写道： 
     <blockquote class="blockquote">
      <p class="para">
       当可以通过 ODBC 直接从 PHP 访问数据库时——例如用 OpenLink 的驱动程序，
       使用其它数据库做中间媒介不是一个好主意。
       如果确实需要一个中间文件格式，
       OpenLink 已经发布了对应于 Windows NT，Linux 和其它 Unix 平台的 Virtuoso（一个虚拟数据库引擎）。
       请访问我们的 <a href="http://www.openlinksw.com/" class="link external">&raquo;&nbsp;网站</a>来免费下载。
      </p>
     </blockquote>
    </p>
    <p class="para">
     还有一个已被证实有效的选择是在 Windows 下用 MySQL 
     和它的 MyODBC 驱动来同步数据库。
     Steve Lawrence 写道：
    </p>
    <p class="para">
     <ul class="itemizedlist">
      <li class="listitem">
       <span class="simpara">
        根据 MySQL 的说明在你的平台上安装 MySQL。可以从 
        <a href="http://www.mysql.com/" class="link external">&raquo;&nbsp;http://www.mysql.com/</a>得到最新版。
        除了设定数据库和配置用户帐号以外不需要特殊的配置，
        应该在 host 字段中放一个 % 或者要用来访问 MySQL 的 Windows 机器名。
        记下自己的服务器名，
        用户名和密码。
       </span>
      </li>
      <li class="listitem">
       <span class="simpara">
        从 MySQL 网站下载 MyODBC for Windows 驱动程序。
        在你的 Windows 机器中安装它。
        可以用此程序中包括的工具来测试其操作。
       </span>
      </li>
      <li class="listitem">
       <span class="simpara">
        用控制面板中的 ODBC 管理器新建一个用户或系统 dsn，
        设定 dsn 名称，
        输入你在第一步中配置的 MySQL 数据库的主机名，用户名，密码，端口等。
       </span>
      </li>
      <li class="listitem">
       <span class="simpara">
        完整安装 Access，
        这样可以确保得到适当的插件... 
        至少需要安装 ODBC 支持和连接表管理器。
       </span>
      </li>
      <li class="listitem">
       <span class="simpara">
        新建一个 Access 数据库。
        在 Table 窗口点击右键并选择 Link Tables，
        或者在 File 菜单下选择 Get External Data -&gt; Link Tables。
        当文件浏览窗口打开后，选择文件类型为：ODBC。
        接着选择 System dsn 以及在第三步建立的 dsn 的名字。
        再选择要连接的表，点击 OK。
        现在你可以在你的 MySQL 
        服务器中打开表并新建／删除／编辑数据了！
        也可以构造查询，导入／导出表到 MySQL，构造表单和报告等。
       </span>
      </li>
     </ul>
    </p>
    <p class="para">
     提示与技巧： 
     <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。
        打开 Tools&gt;Add-ins&gt;Linked table manager，
        找到你的 ODBC DSN，然后在这里选择要重新连接的表。
        也可以在这里移动 dsn 源，
        在点击 OK 之前选中 “always prompt for new location”。
       </span>
      </li>
     </ul>
    </p>
   </dd>
   </dl>
  
 </div>
<?php manual_footer($setup); ?>