English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MySQLデータのクエリ

MySQLデータベースはSQL SELECT文を使用してデータをクエリします。

mysql> コマンドプロンプトでデータベース内のデータをクエリしたり、PHPスクリプトでデータをクエリすることができます。

文法

以下はMySQLデータベースでデータをクエリする一般的なSELECT文法です:

SELECT column_name,column_name
FROM table_name
[WHERE  Clause]
[LIMIT N][ OFFSET M]
  • クエリ文では、1つまたは複数のテーブルを使用し、テーブル間はカンマ(,)で区切って、WHERE文でクエリ条件を設定することができます。

  • SELECTコマンドは1件または複数のレコードを読み取ることができます。

  • 星号(*)を使用して他のフィールドに代わって、SELECT文はテーブルのすべてのフィールドデータを返します

  • WHERE文を使用してどんな条件でも含めることができます。

  • LIMIT属性を使用して返されるレコード数を設定できます。

  • OFFSETを使用してSELECT文の開始位置のデータオフセットを指定できます。デフォルトのオフセットは0です。

コマンドプロンプトを使用してデータを取得

以下の例では、SQL SELECT コマンドを使用してMySQLデータテーブルw3codebox_tblのデータを返します:

オンラインの例

以下の例は、データテーブルw3codebox_tblのすべてのレコード:

select * from w3codebox_tbl;

出力結果:

PHPスクリプトを使用してデータを取得

PHP関数の mysqli_query() 及び SQL SELECT コマンドを使用してデータを取得します。

この関数はSQLコマンドを実行し、PHP関数 mysqli_fetch_array() すべてのクエリデータを使用したり、出力したりするために使用します。

mysqli_fetch_array() 関数は、結果セットから一行を関連配列として、または数字配列として、またはその両方を取得します。 結果セットから取得した行に基づいて生成された配列を返します。もしない場合は false を返します。

以下の例は、データテーブルw3codebox_tblからすべてのレコードを読み取ります。

オンラインの例

以下の例を試してみてください、データテーブルw3codebox_tblのすべてのレコード。

mysqli_fetch_array MYSQLI_ASSOC パラメータを使用してデータを取得:

<?php
$dbhost = 'localhost';  // MySQLサーバー主机アドレス
$dbuser = 'root';            // MySQLユーザー名
$dbpass = '123456';          // MySQLユーザー名とパスワード
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('接続失敗: ' . mysqli_error($conn));
}
// 設定エンコーディング、中華文字のクラーニングを防ぐ
mysqli_query($conn, "set names utf8');
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl';
 
mysqli_select_db($conn, 'w3codebox');}}
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('データを読み込めません: ' . mysqli_error($conn));
}
echo '<h2>基本チュートリアル mysqli_fetch_array テスト</h2">;
echo '<table border="1><tr><td>チュートリアルID</td><td>タイトル</td><td>著者</td><td>提出日付</td></tr>;
while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))
{
    echo "<tr><td> {$row['w3codebox_id'}</td> ".
         "<td>{$row['w3codebox_title']} </td> ".
         "<td>{$row['w3codebox_author'} </td> ".
         "<td>{$row['submission_date']} </td> ".
         "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

以下に結果を出力します:

上記の例では、読み取った各行のレコードを変数 $row に割り当て、それぞれの値を出力します。

注意:文字列内で変数を使用する場合、変数を括弧内に置くことを忘れないでください。

上記の例では、PHP mysqli_fetch_array() 関数の第二引数は MYSQLI_ASSOC、 このパラメータを設定することで、クエリ結果が関連配列として返されます。フィールド名を使用して配列のインデックスとして使用できます。

PHPは別の関数も提供しています mysqli_fetch_assoc()、この関数は結果セットから一行を関連配列として取得します。 結果セットから取得した行に基づいて生成された関連配列を返します。もしない場合は false を返します。

オンラインの例

以下の例を試してみてください、この例では mysqli_fetch_assoc() 関数を使用してデータ表wを出力する}}3codebox_tblのすべてのレコード:

mysqli_fetch_assocを使用してデータを取得:

<?php
$dbhost = 'localhost:3306';  // MySQLサーバー主机アドレス
$dbuser = 'root';            // MySQLユーザー名
$dbpass = '123456';          // MySQLユーザー名とパスワード
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('接続失敗: ' . mysqli_error($conn));
}
// 設定エンコーディング、中華文字のクラーニングを防ぐ
mysqli_query($conn, "set names utf8');
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl';
 
mysqli_select_db($conn, 'w3codebox');}}
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('データを読み込めません: ' . mysqli_error($conn));
}
echo '<h2>基本のチュートリアル mysqli_fetch_assoc テスト</h2">;
echo '<table border="1><tr><td>チュートリアルID</td><td>タイトル</td><td>著者</td><td>提出日付</td></tr>;
while($row = mysqli_fetch_assoc($retval))
{
    echo "<tr><td> {$row['w3codebox_id'}</td> ".
         "<td>{$row['w3codebox_title']} </td> ".
         "<td>{$row['w3codebox_author'} </td> ".
         "<td>{$row['submission_date']} </td> ".
         "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

以下の結果が出力されます:

あなたは、PHPのmysqli_fetch_array()関数の第2引数として常量MYSQLI_NUMを使用することもできます。数字の配列を返します。

オンラインの例

以下の例では、 MYSQLI_NUM パラメータでデータ表wを表示3codebox_tblのすべてのレコード:

mysqli_fetch_arrayのMYSQLI_NUMパラメータを使用してデータを取得:

<?php
$dbhost = 'localhost:3306';  // MySQLサーバー主机アドレス
$dbuser = 'root';            // MySQLユーザー名
$dbpass = '123456';          // MySQLユーザー名とパスワード
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('接続失敗: ' . mysqli_error($conn));
}
// 設定エンコーディング、中華文字のクラーニングを防ぐ
mysqli_query($conn, "set names utf8');
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl';
 
mysqli_select_db($conn, 'w3codebox');}}
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('データを読み込めません: ' . mysqli_error($conn));
}
echo '<h2>基本チュートリアル mysqli_fetch_array テスト</h2">;
echo '<table border="1><tr><td>チュートリアルID</td><td>タイトル</td><td>著者</td><td>提出日付</td></tr>;
while($row = mysqli_fetch_array($retval, MYSQLI_NUM))
{
    echo "<tr><td> {$row[0]}</td> ".
         "<td>{$row[1}</td></td> ".
         "<td>{$row[2}</td></td> ".
         "<td>{$row[3}</td></td> ".
         "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>

以下に結果を出力します:

以上の3つの例の出力結果はすべて同じです。

メモリ解放

SELECT文を実行した後、カーソルメモリを解放することは良い習慣です。

PHP関数mysqli_free_result()を使用してメモリの解放を実行できます。

以下の例は、この関数の使用方法を示しています。

オンラインの例

以下の例を試してみてください:

mysqli_free_resultを使用してメモリを解放:

<?php
$dbhost = 'localhost:3306';  // MySQLサーバー主机アドレス
$dbuser = 'root';            // MySQLユーザー名
$dbpass = '123456';          // MySQLユーザー名とパスワード
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
    die('接続失敗: ' . mysqli_error($conn));
}
// 設定エンコーディング、中華文字のクラーニングを防ぐ
mysqli_query($conn, "set names utf8');
 
$sql = 'SELECT w3codebox_id, w3codebox_title, 
        w3codebox_author, submission_date
        FROM w3codebox_tbl';
 
mysqli_select_db($conn, 'w3codebox');}}
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('データを読み込めません: ' . mysqli_error($conn));
}
echo '<h2>基本チュートリアル mysqli_fetch_array テスト</h2">;
echo '<table border="1><tr><td>チュートリアルID</td><td>タイトル</td><td>著者</td><td>提出日付</td></tr>;
while($row = mysqli_fetch_array($retval, MYSQLI_NUM))
{
    echo "<tr><td> {$row[0]}</td> ".
         "<td>{$row[1}</td></td> ".
         "<td>{$row[2}</td></td> ".
         "<td>{$row[3}</td></td> ".
         "</tr>";
}
echo '</table>';
// メモリを解放
mysqli_free_result($retval);
mysqli_close($conn);
?>

以下に結果を出力します: