MySQLクエリデータ
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 データ テーブル ユーザーのデータを取得します。データテーブル内のすべてのデータを返す ユーザーレコード:
データテーブルの読み取り:
select * from user;
PHP スクリプトを使用してデータを取得する
PHP 関数 mysqli_query() と SQL SELECT コマンドを使用してデータを取得する。 この関数は、SQL コマンドを実行し、PHP 関数 mysqli_fetch_array() を通じてクエリされたすべてのデータを使用または出力するために使用されます。 mysqli_fetch_array() 関数は、結果セットから行を連想配列、数値配列、またはその両方としてフェッチし、結果セットからフェッチされた行に基づいて生成された配列を返します。行がもうない場合は false を返します。
次の例は、データテーブルユーザーからすべてのレコードを読み取ります。
例データテーブルユーザーのすべてのレコードを表示するには、次の例を試してください。
header("Content-Type: text/html;charset=utf-8");
$dbhost = 'localhost'; // mysqlサーバーのホストアドレス
$dbuser = 'root' / mysql username
$dbpass = 'root'; ' .mysqli_error($conn));
}
//中国語の文字化けを防ぐためにエンコーディングを設定します
mysqli_query($conn, "set names utf8");
$sql = ' SELECT user_id, user_title,
user_author, submit_date
FROM user';
mysqli_select_db( $conn, 'DEMO' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die ('データを読み取れません: ' .mysqli_error( $conn));
}
echo '<h2>PHP 中国語 Web サイト mysqli_fetch_array test<h2>';
echo '<table border="1">< tr>gt;
while( $row = mysqli_fetch_array($retval , MYSQLI_ASSOC))
{
echo "<tr><td> {$row['user_id']}</td> ".
" "<td>{$row ['user_title']} <td> ".
" "<td>{$row['user_author']} </td> ".
" "<td> ]} </td> ".
"</tr>";
}
echo '</table>';
mysqli_close($conn);
?>
上記の例では、読み取られたレコードの各行が変数 $row に割り当てられ、各値が出力されます。
注: 文字列内で変数を使用する必要がある場合は、変数を中括弧で囲んでください。
PHP mysqli_fetch_array() 関数の 2 番目のパラメーターは MYSQLI_ASSOC であり、このパラメーターを設定すると、連想配列が返されます。フィールド名を配列のインデックスとして使用できます。
PHP は、結果セットから行を連想配列としてフェッチする別の関数 mysqli_fetch_assoc() を提供します。 結果セットから取得した行に基づいて連想配列を返します。行がない場合は false を返します。
例
mysqli_fetch_assoc() 関数を使用してデータテーブルユーザーのすべてのレコードを出力する次の例を試してください:
<?php
header("Content-Type: text/html;charset=utf-8");
$dbhost = 'localhost'; // mysqlサーバーのホストアドレス
$dbuser = 'root' / mysql username
$dbpass = 'root'; ' .mysqli_error($conn));
}
//中国語の文字化けを防ぐためにエンコーディングを設定します
mysqli_query($conn, "set names utf8");
$sql = ' SELECT user_id, user_title,
user_author, submit_date
FROM user';
mysqli_select_db( $conn, 'DEMO' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die ('データを読み取れません: ' .mysqli_error( $conn));
}
echo '<h2>PHP 中国語 Web サイト mysqli_fetch_assoc test<h2>';
echo '<table border="1">< tr>gt;
while( $row = mysqli_fetch_assoc($retval ))
{
echo "<tr><td> {$row['user_id']}</td> ".
" "<td>{$row[' user_title']} </td> ; ".
;/tr>";
}
echo '</table>';
mysqli_close($conn);
?>
定数 MYSQLI_NUM を PHP mysqli_fetch_array() 関数の 2 番目のパラメーターとして使用して、数値配列を返すこともできます。
例
次の例では、MYSQLI_NUM パラメータを使用して、データ テーブル ユーザーのすべてのレコードを表示します:
<?php
header("Content-Type: text/html;charset=utf-8" );
$dbhost = 'localhost'; // mysql サーバーのホストアドレス
$dbuser = 'root'; // mysql ユーザー名
$dbpass = 'root';
if(! $conn )
{
die('接続に失敗しました: ' .mysqli_error($conn));
}
// 中国語の文字化けを防ぐためにエンコーディングを設定します
mysqli_query($conn, "set names utf8");
$sql = 'SELECT user_id, user_title, user_author, submit_date
FROM user';
mysqli_select_db( $conn, 'demo' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('データを読み取れません: ' 。mysqli_error($conn));
}
echo '<h2>PHP 中国語 Web サイト mysqli_fetch_array test<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>{$row[2]} " $row[3]} </td> ".
" "</tr>";
}
echo '</table>';
mysqli_close($conn);
?>
上記 3 つの例の出力結果は同じです。
メモリの解放
SELECT ステートメントを実行した後、カーソルのメモリを解放するのは良い習慣です。
メモリは、PHP 関数 mysqli_free_result() を通じて解放できます。
次の例は、この関数の使用法を示しています。
例
次の例を試してください:
<?php
header("Content-Type: text/html;charset=utf-8");
$dbhost = 'localhost'; // mysqlサーバーのホストアドレス
$dbuser = 'root'; //mysql username
$dbpass = 'root'; : ' .mysqli_error($conn));
}
//中国語の文字化けを防ぐためにエンコーディングを設定します
mysqli_query($conn, "set names utf8");
$ sql = 'user_id、user_title、
user_author、submission_date
FROM user';
mysqli_select_db( $conn, 'demo' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('データを読み取れません: ' .mysqli_error ($conn));
}
echo '<h2>PHP 中国語 Web サイト mysqli_fetch_array test<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>{$row[2]} </td> ".
"<td>{$row[3]} </td> ".
"</tr>" ;
}
echo '</table>';
// メモリを解放します
mysqli_free_result($retval);
mysqli_close($conn);
?>
関連コースの推奨事項: