English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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関数の mysqli_query() 及び SQL SELECT コマンドを使用してデータを取得します。
この関数はSQLコマンドを実行し、PHP関数 mysqli_fetch_array() すべてのクエリデータを使用したり、出力したりするために使用します。
mysqli_fetch_array() 関数は、結果セットから一行を関連配列として、または数字配列として、またはその両方を取得します。 結果セットから取得した行に基づいて生成された配列を返します。もしない場合は false を返します。
以下の例は、データテーブルw3codebox_tblからすべてのレコードを読み取ります。
以下の例を試してみてください、データテーブルw3codebox_tblのすべてのレコード。
<?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のすべてのレコード:
<?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のすべてのレコード:
<?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()を使用してメモリの解放を実行できます。
以下の例は、この関数の使用方法を示しています。
以下の例を試してみてください:
<?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); ?>
以下に結果を出力します: