svn: /phpdoc/zh/trunk/faq/ databases.xml

[email protected] (YuQiang Yuan) Fri, 26 Jul 2019 04:55:11 +0000
Newsgroups php.doc.zh
Message-ID <[email protected]>
yuanyuqiang                              Fri, 26 Jul 2019 04:55:11 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=347800

Log:
update to new en version

Changed paths:
    U   phpdoc/zh/trunk/faq/databases.xml
svn-diffs-347800.txt (text/x-diff, 16.9 KB)
Modified: phpdoc/zh/trunk/faq/databases.xml
===================================================================
--- phpdoc/zh/trunk/faq/databases.xml	2019-07-25 16:58:04 UTC (rev 347799)
+++ phpdoc/zh/trunk/faq/databases.xml	2019-07-26 04:55:11 UTC (rev 347800)
@@ -1,119 +1,202 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- EN-Revision: 340962 Maintainer: yuanyuqiang Status: ready -->
 <!-- $Revision$ -->
-<!-- $Author$ -->
-<!-- $EN-Revision: 340962 $ -->
-<chapter xml:id="faq.databases"
-         xmlns="http://docbook.org/ns/docbook"
-         xmlns:xlink="http://www.w3.org/1999/xlink">
-  <title>数据库问题</title>
-  <titleabbrev>数据库问题</titleabbrev>
-  <para>本节包括 PHP 和数据库之间关系的常见问题。是的,PHP 事实上可以访问如今现有的任何数据库。</para>
-  <qandaset>
-    <qandaentry xml:id="faq.databases.mssql">
-      <question>
-        <para>听说 PHP 有可能访问 Microsoft SQL Server,怎样访问?</para>
-      </question>
-      <answer>
-        <para>在 Windows 机器中,可以简单地使用内置的 ODBC 支持和正确的 ODBC 驱动程序。</para>
-        <para>在 Unix 机器中,可以用 Sybase-CT 驱动程序来访问 Microsoft SQL Server,因为它们的协议是(至少大部分)兼容的。Sybase 做了一个
-        Linux 系统下所需库的免费版本<!-- Removed link to fix the build ~sobak 12/06/2016 -->。对于其它 Unix 操作系统,需要和 Sybase 联系来得到正确的库。同样也看看下一个问题的回答。</para>
-      </answer>
-    </qandaentry>
-    <qandaentry xml:id="faq.databases.access">
-      <question>
-        <para>能访问 Microsoft Access 数据库吗?</para>
-      </question>
-      <answer>
-        <para>可以。如果完全在 Windows 9x/Me/NT/2000 下运行,那已经有了所有所需的工具,可以用 ODBC 和 Microsoft&#39;s ODBC drivers for Microsoft Access database。</para>
-        <para>如果在 Unix 下运行 PHP 而想访问 Windows 中的 MS Access,那需要 Unix ODBC 驱动程序。
-        <link xlink:href="&url.openlink;">OpenLink Software</link>有一个基于 Unix 的 ODBC 驱动程序可以做这件事。</para>
-        <para>另外一个替代方案是用带 Windows ODBC 驱动的 SQL Server 并用它来储存数据,可以通过 Microsoft Access(用 ODBC)和 PHP(用内置驱动)来访问,或者用一个 Access 和 PHP 都识别的中间文件格式,例如 flat 文件或者 dBase 数据库。关于这一点 OpenLink Software 的 Tim Hayes 写道:
-        <blockquote>
-          <para>当可以通过 ODBC 直接从 PHP 访问数据库时——例如用 OpenLink 的驱动程序,使用其它数据库做中间媒介不是一个好主意。如果确实需要一个中间文件格式,OpenLink 已经发布了对应于 Windows NT,Linux 和其它 Unix 平台的 Virtuoso(一个虚拟数据库引擎)。请访问我们的
-          <link xlink:href="&url.openlink;">网站</link>来免费下载。</para>
-        </blockquote></para>
-        <para>还有一个已被证实有效的选择是在 Windows 下用 MySQL 和它的 MyODBC 驱动来同步数据库。Steve Lawrence 写道:</para>
-        <para>
-          <itemizedlist>
-            <listitem>
-              <simpara>根据 MySQL 的说明在你的平台上安装 MySQL。可以从
-              <link xlink:href="&url.mysql;">&url.mysql;</link>得到最新版。除了设定数据库和配置用户帐号以外不需要特殊的配置,应该在 host 字段中放一个 % 或者要用来访问 MySQL 的 Windows 机器名。记下自己的服务器名,用户名和密码。</simpara>
-            </listitem>
-            <listitem>
-              <simpara>从 MySQL 网站下载 MyODBC for Windows 驱动程序。在你的 Windows 机器中安装它。可以用此程序中包括的工具来测试其操作。</simpara>
-            </listitem>
-            <listitem>
-              <simpara>用控制面板中的 ODBC 管理器新建一个用户或系统 dsn,设定 dsn 名称,输入你在第一步中配置的 MySQL 数据库的主机名,用户名,密码,端口等。</simpara>
-            </listitem>
-            <listitem>
-              <simpara>完整安装 Access,这样可以确保得到适当的插件 ... 至少需要 ODBC 支持和连接表管理器。</simpara>
-            </listitem>
-            <listitem>
-              <simpara>新建一个 Access 数据库。在 Table 窗口点击右键并选择 Link Tables,或者在 File 菜单下选择 Get External Data -&gt; Link Tables。当文件浏览窗口打开后,选择文件类型为:ODBC。接着选择 System dsn 以及在第三步建立的 dsn 的名字。再选择要连接的表,点击 OK。现在你可以在你的 MySQL 服务器中打开表并新建/删除/编辑数据了!也可以构造查询,导入/导出表到 MySQL,构造表单和报告等。</simpara>
-            </listitem>
-          </itemizedlist>
-        </para>
-        <para>提示与技巧:
-        <itemizedlist>
-          <listitem>
-            <simpara>可以在 Access 中构造表并导出到 MySQL 中,再把它们连接回来。这样可以使表的建立更快。</simpara>
-          </listitem>
-          <listitem>
-            <simpara>在 Access 中建立表时,必需定义一个基本键名来取得表的写权限。确认在把表连接到 Access 之前在 MySQL 中建立了基本键名。</simpara>
-          </listitem>
-          <listitem>
-            <simpara>如果在 MySQL 中修改了表,必须重新连接到 Access。打开 Tools&gt;Add-ins&gt;Linked table manager,找到你的 ODBC DSN,然后在这里选择要重新连接的表。也可以在这里移动 dsn 源,在点击 OK 之前选中 always prompt for new location。</simpara>
-          </listitem>
-        </itemizedlist></para>
-      </answer>
-    </qandaentry>
-    <qandaentry xml:id="faq.databases.upgraded">
-      <question>
-        <para>我升级到了 PHP 4,结果 MySQL 不断报告“Warning: MySQL: Unable to save result set in ..”,这是怎么回事?</para>
-      </question>
-      <answer>
-        <para>看上去最有可能的是,PHP 4 在编译时使用了
-        <option role="configure">--with-mysql</option>选项但没有指定 MySQL 的路径。这意味着 PHP 使用了它自己内置的 MySQL 客户端库。如果你的系统运行了使用其它版本的 MySQL 客户端库的应用程序,例如作为 Apache 模块的 PHP 3,那么在两个不同版本的客户端之间有冲突。</para>
-        <para>重新编译 PHP 4,并在标记中加上 MySQL 的路径“
-        <link linkend="mysql.configure">--with-mysql=/your/path/to/mysql</link>”通常会解决此问题。</para>
-      </answer>
-    </qandaentry>
-
-   <qandaentry xml:id="faq.databases.mysql.deprecated">
-    <question>
-     <para>
-      Why is the MySQL extension (ext/mysql) that I've been using for over
-      10 years discouraged from use? Is it deprecated? What do I use instead?
-      How can I migrate?
-     </para>
-    </question>
-    <answer>
-     <para>
-      There are three MySQL extensions, as described under the
-      <link linkend="mysqlinfo.api.choosing">Choosing a MySQL API</link> section. The old API
-      should not be used, and one day it will be deprecated and eventually removed from PHP.
-      It is a popular extension so this will be a slow process, but you are strongly encouraged
-      to write all new code with either <link linkend="book.mysqli">mysqli</link> or
-      <link linkend="ref.pdo-mysql">PDO_MySQL</link>.
-     </para>
-     <para>
-      Migration scripts are not available at this time, although the mysqli API contains both
-      a procedural and OOP API, with the procedural version being similar to ext/mysql.
-     </para>
-     <para>
-      It is not possible to mix the extensions. So, for example, passing a mysqli connection to
-      PDO_MySQL or ext/mysql will not work.
-     </para>
-    </answer>
-   </qandaentry>
-    <qandaentry xml: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 的结果资源号。0 表示你的查询由于某原因失败了,需要在提交查询之后和在使用返回结果资源号之前检查错误。正确的方法是用类似如下的代码:
-        <programlisting role="php">
-          <![CDATA[
+<chapter xml:id="faq.databases" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>数据库问题</title>
+ <titleabbrev>数据库问题</titleabbrev>
+ <para>
+  本节包括 PHP 和数据库之间关系的常见问题。
+  事实上,
+  PHP 可以访问如今现有的任何数据库。
+ </para>
+
+ <qandaset>
+  <qandaentry xml:id="faq.databases.mssql">
+   <question>
+    <para>
+     听说 PHP 有可能访问 Microsoft SQL Server,怎样访问?
+    </para>
+   </question>
+   <answer>
+    <para>
+     在 Unix 机器中,你可以使用 <link linkend="ref.pdo-odbc">PDO_ODBC</link>
+     或者 <link linkend="book.uodbc">Unified ODBC API</link> 来访问 Microsoft SQL Server 数据库。
+    </para>
+    <para>
+     在 Windows 机器中,你可以使用 <link linkend="ref.pdo-sqlsrv">PDO_SQLSRV</link>
+     或 <link linkend="book.sqlsrv">SQLSRV</link> 来访问 Microsoft SQL Server 数据库。
+    </para>
+    <para>
+     同时,也可以参考下一个问题。
+    </para>
+   </answer>
+  </qandaentry>
+
+  <qandaentry xml:id="faq.databases.access">
+   <question>
+    <para>能访问 Microsoft Access 数据库吗?</para>
+   </question>
+   <answer>
+    <para>
+     可以。如果完全在 Windows 9x/Me/NT/2000 下运行,那已经有了所有所需的工具,
+     可以用 ODBC
+     和 Microsoft&#39;s ODBC drivers for Microsoft Access database。
+    </para>
+    <para>
+     如果在 Unix 下运行 PHP 而想访问 Windows 中的 MS Access,
+     那需要 Unix ODBC 驱动程序。
+     <link xlink:href="&url.openlink;">OpenLink Software</link>
+     有一个基于 Unix 的 ODBC 驱动程序可以做这件事。
+    </para>
+    <para>
+     另外一个替代方案是用带 Windows ODBC
+     驱动的 SQL Server 并用它来储存数据,
+     可以通过 Microsoft Access(用 ODBC)和 PHP(用内置驱动)来访问,
+     或者用一个 Access 和 PHP 都识别的中间文件格式,
+     例如 flat 文件或者 dBase 数据库。
+     关于这一点 OpenLink Software 的 Tim Hayes 写道:
+     <blockquote>
+      <para>
+       当可以通过 ODBC 直接从 PHP 访问数据库时——例如用 OpenLink 的驱动程序,
+       使用其它数据库做中间媒介不是一个好主意。
+       如果确实需要一个中间文件格式,
+       OpenLink 已经发布了对应于 Windows NT,Linux 和其它 Unix 平台的 Virtuoso(一个虚拟数据库引擎)。
+       请访问我们的 <link xlink:href="&url.openlink;">网站</link>来免费下载。
+      </para>
+     </blockquote>
+    </para>
+    <para>
+     还有一个已被证实有效的选择是在 Windows 下用 MySQL
+     和它的 MyODBC 驱动来同步数据库。
+     Steve Lawrence 写道:
+    </para>
+    <para>
+     <itemizedlist>
+      <listitem>
+       <simpara>
+        根据 MySQL 的说明在你的平台上安装 MySQL。可以从
+        <link xlink:href="&url.mysql;">&url.mysql;</link>得到最新版。
+        除了设定数据库和配置用户帐号以外不需要特殊的配置,
+        应该在 host 字段中放一个 % 或者要用来访问 MySQL 的 Windows 机器名。
+        记下自己的服务器名,
+        用户名和密码。
+       </simpara>
+      </listitem>
+      <listitem>
+       <simpara>
+        从 MySQL 网站下载 MyODBC for Windows 驱动程序。
+        在你的 Windows 机器中安装它。
+        可以用此程序中包括的工具来测试其操作。
+       </simpara>
+      </listitem>
+      <listitem>
+       <simpara>
+        用控制面板中的 ODBC 管理器新建一个用户或系统 dsn,
+        设定 dsn 名称,
+        输入你在第一步中配置的 MySQL 数据库的主机名,用户名,密码,端口等。
+       </simpara>
+      </listitem>
+      <listitem>
+       <simpara>
+        完整安装 Access,
+        这样可以确保得到适当的插件...
+        至少需要安装 ODBC 支持和连接表管理器。
+       </simpara>
+      </listitem>
+      <listitem>
+       <simpara>
+        新建一个 Access 数据库。
+        在 Table 窗口点击右键并选择 Link Tables,
+        或者在 File 菜单下选择 Get External Data -&gt; Link Tables。
+        当文件浏览窗口打开后,选择文件类型为:ODBC。
+        接着选择 System dsn 以及在第三步建立的 dsn 的名字。
+        再选择要连接的表,点击 OK。
+        现在你可以在你的 MySQL
+        服务器中打开表并新建/删除/编辑数据了!
+        也可以构造查询,导入/导出表到 MySQL,构造表单和报告等。
+       </simpara>
+      </listitem>
+     </itemizedlist>
+    </para>
+    <para>
+     提示与技巧:
+     <itemizedlist>
+      <listitem>
+       <simpara>
+        可以在 Access 中构造表并导出到 MySQL 中,
+        再把它们连接回来。
+        这样可以使表的建立更快。
+       </simpara>
+      </listitem>
+      <listitem>
+       <simpara>
+        在 Access 中建立表时,
+        必需定义一个基本键名来取得表的写权限。
+        确认在把表连接到 Access 之前在 MySQL
+        中建立了基本键名。
+       </simpara>
+      </listitem>
+      <listitem>
+       <simpara>
+        如果在 MySQL 中修改了表,
+        必须重新连接到 Access。
+        打开 Tools&gt;Add-ins&gt;Linked table manager,
+        找到你的 ODBC DSN,然后在这里选择要重新连接的表。
+        也可以在这里移动 dsn 源,
+        在点击 OK 之前选中 “always prompt for new location”。
+       </simpara>
+      </listitem>
+     </itemizedlist>
+    </para>
+   </answer>
+  </qandaentry>
+
+  <qandaentry xml:id="faq.databases.mysql.deprecated">
+   <question>
+    <para>
+     为什么我已经使用了十多年的 MySQL 扩展(ext/mysql)
+     不建议继续使用了?
+     它被废弃了吗?我应该选择什么替代方案?如何迁移到新的方案?
+    </para>
+   </question>
+   <answer>
+    <para>
+     在 <link linkend="mysqlinfo.api.choosing">选择一种 MySQL API</link> 一节中
+     描述了 3 中 MySQL 扩展。
+     不应该继续使用旧的 API 了,可能将来的某一天旧 API 就会被废弃甚至从 PHP 中移除。
+     当然,旧的 API 曾经是非常主流的,很多用户都用了它,所以这个被废弃及移除的过程不会太快。
+     但是仍然强烈建议使用 <link linkend="book.mysqli">mysqli</link> 或
+     <link linkend="ref.pdo-mysql">PDO_MySQL</link> 来访问 MySQL 数据库。
+    </para>
+    <para>
+     自动迁移脚本目前还没有。
+     mysqli API 包括了面向过程和面向对象的两种风格的调用方式,并且面向过程的版本中提供的 API 和 ext/mysql 是非常相似的。
+    </para>
+    <para>
+     不可以同时混合使用这几种 MySQL API。
+     例如,你不可以把一个 mysqli 的连接资源传入到 PDO_MySQL 或者 ext/mysql 中去使用。
+    </para>
+   </answer>
+  </qandaentry>
+
+  <qandaentry xml: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 的结果资源号。
+     0 表示你的查询由于某原因失败了,
+     需要在提交查询之后
+     和在使用返回结果资源号之前检查错误。
+     正确的方法是用类似如下的代码:
+     <programlisting role="php">
+<![CDATA[
 <?php

 $result = mysql_query("SELECT * FROM tables_priv");
@@ -123,9 +206,10 @@
 }
 ?>
 ]]>
-</programlisting>或者
-        <programlisting role="php">
-          <![CDATA[
+     </programlisting>
+     或者
+     <programlisting role="php">
+<![CDATA[
 <?php

 $result = mysql_query("SELECT * FROM tables_priv")
@@ -132,11 +216,13 @@
     or die("Bad query: " . mysql_error());
 ?>
 ]]>
-</programlisting></para>
-      </answer>
-    </qandaentry>
-  </qandaset>
+     </programlisting>
+    </para>
+   </answer>
+  </qandaentry>
+ </qandaset>
 </chapter>
+
 <!-- Keep this comment at the end of the file
 Local variables:
 mode: sgml