com doc/ja: Remove references to `mysql` extension and to versions below 7.0: reference/mysqlinfo/concepts.xml reference/mysqlinfo/set.xml
[email protected] (Yoshinari Takaoka) Tue, 12 Jan 2021 17:28:39 +0000
| Newsgroups | php.doc.ja |
|---|---|
| Message-ID | <[email protected]> |
Commit: f2012e107e660104c8f8028e8e7232424abeec30 Author: Yoshinari Takaoka <[email protected]> Wed, 13 Jan 2021 02:28:39 +0900 Parents: 987c394d491677fae7c23d579388eebdc66ed3a3 Branches: master Link: http://git.php.net/?p=doc/ja.git;a=commitdiff;h=f2012e107e660104c8f8028e8e7232424abeec30 Log: Remove references to `mysql` extension and to versions below 7.0 Closes GH-315. Changed paths: M reference/mysqlinfo/concepts.xml M reference/mysqlinfo/set.xml
diff_f2012e107e660104c8f8028e8e7232424abeec30.txt
(text/plain, 16.3 KB)
diff --git a/reference/mysqlinfo/concepts.xml b/reference/mysqlinfo/concepts.xml
index ce78fadec5..cdda9ef03d 100644
--- a/reference/mysqlinfo/concepts.xml
+++ b/reference/mysqlinfo/concepts.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: a714378ed87cdbdbde3b10ded183e8df7b243cb4 Maintainer: takagi Status: ready -->
+<!-- EN-Revision: 383a659e1f0f7aa3330b31a095a1e927611d4c71 Maintainer: takagi Status: ready -->
+<!-- Credits: mumumu -->
<chapter xml:id="mysqlinfo.concepts" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>コンセプト</title>
<para>
@@ -73,7 +74,6 @@ if ($uresult) {
echo $row['Name'] . PHP_EOL;
}
}
-$uresult->close();
?>
]]>
</programlisting>
@@ -98,24 +98,6 @@ if ($uresult) {
</programlisting>
</example>
- <example>
- <title>非バッファクエリの例: mysql</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-$conn = mysql_connect("localhost", "my_user", "my_pass");
-$db = mysql_select_db("world");
-
-$uresult = mysql_unbuffered_query("SELECT Name FROM City");
-if ($uresult) {
- while ($row = mysql_fetch_assoc($uresult)) {
- echo $row['Name'] . PHP_EOL;
- }
-}
-?>
-]]>
- </programlisting>
- </example>
</section>
<section xml:id="mysqlinfo.concepts.charset">
@@ -135,8 +117,7 @@ if ($uresult) {
すべての操作に影響が及び、セキュリティの問題を引き起こす可能性があるからです。
たとえば、文字列のエスケープ
(mysqli なら <function>mysqli_real_escape_string</function>、
- mysql なら <function>mysql_real_escape_string</function>、
- そして PDO_MySQL なら <methodname>PDO::quote</methodname>)
+ PDO_MySQL なら <methodname>PDO::quote</methodname>)
は文字セットの設定に従った動きをします。
これらの関数は、クエリで設定した文字セットは使わないことを知っておくことが大切です。
たとえば次の例のような設定をしても、エスケープ機能は正しく動きません。
@@ -162,7 +143,6 @@ $mysqli->set_charset('utf8mb4');
// いっぽう、こちらは影響を及ぼしません (UTF-8 と utf8mb4 の違いに注目) -- ここではハイフンを使ってはいけません
$mysqli->set_charset('UTF-8');
-
?>
]]>
</programlisting>
@@ -190,16 +170,14 @@ $mysqli->set_charset('UTF-8');
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
-printf("Initial character set: %s\n", $mysqli->character_set_name());
+echo 'Initial character set: ' . $mysqli->character_set_name() . "\n";
if (!$mysqli->set_charset('utf8mb4')) {
printf("Error loading character set utf8mb4: %s\n", $mysqli->error);
exit;
}
-echo "New character set information:\n";
-print_r( $mysqli->get_charset() );
-
+echo 'Your current character set is: ' . $mysqli->character_set_name() . "\n";
?>
]]>
</programlisting>
@@ -216,26 +194,6 @@ $pdo = new PDO("mysql:host=localhost;dbname=world;charset=utf8mb4", 'my_user', '
</programlisting>
</example>
- <example>
- <title>文字セットの設定: mysql</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-$conn = mysql_connect("localhost", "my_user", "my_pass");
-$db = mysql_select_db("world");
-
-echo 'Initial character set: ' . mysql_client_encoding($conn) . "\n";
-
-if (!mysql_set_charset('utf8mb4', $conn)) {
- echo "Error: Unable to set the character set.\n";
- exit;
-}
-
-echo 'Your current character set is: ' . mysql_client_encoding($conn);
-?>
-]]>
- </programlisting>
- </example>
</section>
</chapter>
diff --git a/reference/mysqlinfo/set.xml b/reference/mysqlinfo/set.xml
index 7976a6bf9d..a906b9e3c8 100644
--- a/reference/mysqlinfo/set.xml
+++ b/reference/mysqlinfo/set.xml
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 98bf51d2b9db0a9acd1c9bcce8eecc5bcf60a63d Maintainer: takagi Status: ready -->
+<!-- EN-Revision: 383a659e1f0f7aa3330b31a095a1e927611d4c71 Maintainer: takagi Status: ready -->
+<!-- Credits: mumumu -->
<set xml:id="set.mysqlinfo">
<title>MySQL ドライバおよびプラグイン</title>
@@ -24,12 +25,9 @@
<title>はじめに</title>
<abstract>
<para>
- PHP から MySQL データベースにアクセスするための API は、二種類または三種類
- (PHP のバージョンによって異なります) です。PHP 5 を使う場合は、
- 非推奨の <link linkend="book.mysql">mysql</link> 拡張モジュールか、
+ PHP から MySQL データベースにアクセスするための API は複数あります。
<link linkend="book.mysqli">mysqli</link> あるいは
<link linkend="ref.pdo-mysql">PDO_MySQL</link> が利用できます。
- PHP 7 では mysql 拡張モジュールが削除されたので、残りの二種類のいずれかを利用します。
</para>
<para>
このページでは、これらの API についての説明に登場する
@@ -133,9 +131,8 @@
<emphasis>拡張モジュール</emphasis> という用語がよく出てきます。
PHP のコードには、コア機能とは別に
オプションの拡張モジュールが用意されています。
- PHP で使える MySQL 関連の拡張モジュールには <literal>mysqli</literal>
- や <literal>mysql</literal> があり、
- これらは PHP の拡張モジュール用フレームワークを使って実装されています。
+ PHP で使える MySQL 関連の拡張モジュールには <literal>mysqli</literal> があり、
+ PHP の拡張モジュール用フレームワークを使って実装されています。
</para>
<para>
@@ -160,15 +157,15 @@
<chapter xml:id="mysqlinfo.api.choosing" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>どの API を使うか</title>
<para>
- PHP には、MySQL への接続用の API が三種類あります。
- 以下に、mysql と mysqli そして PDO が提供する API を示します。
+ PHP には、様々な MySQL へ接続する API があります。
+ 以下に、mysqli と PDO が提供する API を示します。
それぞれのコードは、"example.com" 上で稼働する MySQL サーバーに
ユーザー名 "user"、パスワード "password" で接続するものです。
そして、クエリを実行してユーザーにあいさつします。
</para>
<para>
<example>
- <title>三種類の MySQL 用 API の比較</title>
+ <title>MySQL 用 API の比較</title>
<programlisting role="php">
<![CDATA[
<?php
@@ -183,41 +180,25 @@ $pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
-
-// mysql
-$c = mysql_connect("example.com", "user", "password");
-mysql_select_db("database");
-$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
-$row = mysql_fetch_assoc($result);
-echo htmlentities($row['_message']);
-?>
]]>
</programlisting>
</example>
</para>
<para>
- <emphasis role="bold">おすすめの API</emphasis>
+ <emphasis role="bold">機能の比較</emphasis>
</para>
<para>
- <link linkend="book.mysqli">mysqli</link>
- か <link linkend="ref.pdo-mysql">PDO_MySQL</link> のどちらかを使うことをおすすめします。
- 古い <link linkend="ref.mysql">mysql</link> 拡張モジュールを新規開発で使うのはおすすめしません。
- というのも、これは PHP 5.5.0 で非推奨となり、PHP 7 で削除されたからです。
- 詳しい機能比較を以下に示します。全体的なパフォーマンスは、どれもほぼ同じです。
+ 全体的なパフォーマンスは、どれもほぼ同じです。
拡張モジュール自体のパフォーマンスが PHP のウェブリクエストの実行時間に及ぼす影響はごくわずかで、
たいていは 0.1% 程度に過ぎません。
</para>
- <para>
- <emphasis role="bold">機能比較</emphasis>
- </para>
<informaltable>
- <tgroup cols="4">
+ <tgroup cols="3">
<thead>
<row>
<entry></entry>
<entry>ext/mysqli</entry>
<entry>PDO_MySQL</entry>
- <entry>ext/mysql</entry>
</row>
</thead>
<tbody>
@@ -225,109 +206,86 @@ echo htmlentities($row['_message']);
<entry>どのバージョンの PHP から使えるか</entry>
<entry>5.0</entry>
<entry>5.1</entry>
- <entry>2.0</entry>
- </row>
- <row>
- <entry>PHP 5.x に同梱されているか</entry>
- <entry>Yes</entry>
- <entry>Yes</entry>
- <entry>Yes</entry>
</row>
<row>
- <entry>PHP 7.x に同梱されているか</entry>
+ <entry>PHP 7.x と PHP 8.x に同梱されているか</entry>
<entry>Yes</entry>
<entry>Yes</entry>
- <entry>No</entry>
</row>
<row>
<entry>開発状況</entry>
<entry>進行中</entry>
<entry>進行中</entry>
- <entry>5.x では保守対応のみ、7.x では削除</entry>
</row>
<row>
<entry>ライフサイクル</entry>
<entry>活動中</entry>
<entry>活動中</entry>
- <entry>5.x で非推奨、7.x で削除</entry>
</row>
<row>
<entry>新規開発でおすすめできるか</entry>
<entry>Yes</entry>
<entry>Yes</entry>
- <entry>No</entry>
</row>
<row>
<entry>オブジェクト指向のインターフェイス</entry>
<entry>Yes</entry>
<entry>Yes</entry>
- <entry>No</entry>
</row>
<row>
<entry>手続き型のインターフェイス</entry>
<entry>Yes</entry>
<entry>No</entry>
- <entry>Yes</entry>
</row>
<row>
<entry>mysqlnd によるノンブロッキングな非同期クエリ</entry>
<entry>Yes</entry>
<entry>No</entry>
- <entry>No</entry>
</row>
<row>
<entry>持続的接続</entry>
<entry>Yes</entry>
<entry>Yes</entry>
- <entry>Yes</entry>
</row>
<row>
<entry>文字セット</entry>
<entry>Yes</entry>
<entry>Yes</entry>
- <entry>Yes</entry>
</row>
<row>
<entry>サーバーサイドのプリペアドステートメント</entry>
<entry>Yes</entry>
<entry>Yes</entry>
- <entry>No</entry>
</row>
<row>
<entry>クライアントサイドのプリペアドステートメント</entry>
<entry>No</entry>
<entry>Yes</entry>
- <entry>No</entry>
</row>
<row>
<entry>ストアドプロシージャ</entry>
<entry>Yes</entry>
<entry>Yes</entry>
- <entry>No</entry>
</row>
<row>
<entry>複数ステートメント</entry>
<entry>Yes</entry>
<entry>Most</entry>
- <entry>No</entry>
</row>
<row>
<entry>トランザクション</entry>
<entry>Yes</entry>
<entry>Yes</entry>
- <entry>No</entry>
</row>
<row>
<entry>SQL によるトランザクション制御</entry>
<entry>Yes</entry>
<entry>Yes</entry>
- <entry>Yes</entry>
</row>
<row>
<entry>MySQL 5.1+ の全機能への対応</entry>
<entry>Yes</entry>
<entry>Most</entry>
- <entry>No</entry>
</row>
</tbody>
</tgroup>
@@ -337,13 +295,13 @@ echo htmlentities($row['_message']);
<chapter xml:id="mysqlinfo.library.choosing" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>どのライブラリを選ぶか</title>
<para>
- mysqli、PDO_MySQL、そして mysql といった PHP 拡張モジュールは、
+ mysqli、PDO_MySQL といった PHP 拡張モジュールは、
どれも C クライアントライブラリの軽量なラッパーです。これらの拡張モジュールは、
<link linkend="book.mysqlnd">mysqlnd</link> ライブラリあるいは <literal>libmysqlclient</literal>
ライブラリのいずれかを使えます。どちらを使うのかを決めるのは、コンパイル時です。
</para>
<para>
- mysqlnd ライブラリは、PHP 5.3.0 以降に組み込まれています。
+ mysqlnd ライブラリは、PHP の一部として配布されています。
遅延接続やクエリのキャッシュなど、libmysqlclient にはない機能も搭載されているので、
この mysqlnd ライブラリを使うことを強くおすすめします。
<link linkend="book.mysqlnd">mysqlnd のドキュメント</link>
@@ -355,13 +313,13 @@ echo htmlentities($row['_message']);
<programlisting role="shell">
<![CDATA[
// おすすめの方法。mysqlnd を使ってコンパイルします。
-$ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd
+$ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
-// もうひとつのおすすめの方法。PHP 5.4 以降で mysqlnd を使ってコンパイルします。
-$ ./configure --with-mysqli --with-pdo-mysql --with-mysql
+// もうひとつのおすすめの方法。mysqlnd を使ってコンパイルします。
+$ ./configure --with-mysqli --with-pdo-mysql
// おすすめしない方法。libmysqlclient を使ってコンパイルします。
-$ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysql_config --with-mysql=/path/to/mysql_config
+$ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysql_config
]]>
</programlisting>
</example>
@@ -410,28 +368,23 @@ $ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysq
<entry>終了予定なし</entry>
</row>
<row>
- <entry>PHP 5.4 以降でのコンパイルのデフォルト (すべての MySQL 拡張モジュール)</entry>
+ <entry>コンパイルのデフォルト (すべての MySQL 拡張モジュール)</entry>
<entry>Yes</entry>
<entry>No</entry>
</row>
<row>
- <entry>PHP 5.3 でのコンパイルのデフォルト (すべての MySQL 拡張モジュール)</entry>
- <entry>No</entry>
- <entry>Yes</entry>
- </row>
- <row>
<entry>圧縮プロトコルへの対応</entry>
- <entry>Yes (5.3.1+)</entry>
+ <entry>Yes</entry>
<entry>Yes</entry>
</row>
<row>
<entry>SSL への対応</entry>
- <entry>Yes (5.3.3+)</entry>
+ <entry>Yes</entry>
<entry>Yes</entry>
</row>
<row>
<entry>名前付きパイプへの対応</entry>
- <entry>Yes (5.3.4+)</entry>
+ <entry>Yes</entry>
<entry>Yes</entry>
</row>
<row>
@@ -471,32 +424,32 @@ $ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysq
</row>
<row>
<entry>MySQL Replication での読み書きの分離</entry>
- <entry>Yes, with plugin</entry>
+ <entry>Yes. プラグインを使います。</entry>
<entry>No</entry>
</row>
<row>
<entry>ロードバランシング</entry>
- <entry>Yes, with plugin</entry>
+ <entry>Yes. プラグインを使います。</entry>
<entry>No</entry>
</row>
<row>
<entry>フェイルオーバー</entry>
- <entry>Yes, with plugin</entry>
+ <entry>Yes. プラグインを使います。</entry>
<entry>No</entry>
</row>
<row>
<entry>遅延接続</entry>
- <entry>Yes, with plugin</entry>
+ <entry>Yes. プラグインを使います。</entry>
<entry>No</entry>
</row>
<row>
<entry>クエリキャッシュ</entry>
- <entry>Yes, with plugin</entry>
+ <entry>Yes. プラグインを使います。</entry>
<entry>No</entry>
</row>
<row>
<entry>透過的なクエリ操作 (自動 EXPLAIN あるいはモニタリングなど)</entry>
- <entry>Yes, with plugin</entry>
+ <entry>Yes. プラグインを使います。</entry>
<entry>No</entry>
</row>
<row>