フリーランス|WEB 制作経験丸7年、制作会社様からのご依頼に丁寧・高クオリティでお手伝いいたします。 IRODORI DESIGN

B L O G

【PHP/MySQL】SELECT文を使ってデータを取得する方法

MySQL
mysqli
PHP
SELECT文
データベース

PHPのmysqli()関数を使ってデータベース(MySQL)の値を操作することが出来ます。
この記事ではその中でも基本となるデータベースからのデータ取得にスポットを当てて、基本的なデータの取得方法をご紹介したいと思います。

データベースの中身

この記事では「member_list」という名前のテーブルで、格納されているデータは以下のようになっているものとします。

member_id	name	age	sei
1		田中	30	男性
2		山田	40	女性
3		佐藤	20	女性
4		高橋	10	男性
5		鈴木	50	男性

全件取得する

「member_list」テーブルに格納されているデータを全件取得する方法はこちら。

"SELECT * FROM テーブル名";

全件、全カラムを取得する場合はSELECT *とします。*とすることで全てのカラムの情報を取得できます。

// 全件取得
$sql = "SELECT * FROM member_list";
$result = mysqli_query( $db_connect, $sql );

if( mysqli_num_rows( $result ) > 0 )
{
    echo "<table border>";
    while( $row = mysqli_fetch_assoc( $result ) )
    {
        echo "<tr>";
        echo "<td>" . $row["member_id"] . "</td>";
        echo "<td>" . $row["name"] . "</td>";
        echo "<td>" . $row["age"] . "</td>";
        echo "<td>" . $row["sei"] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else
{
    echo "<p>データが存在しません。</p>";
}

mysqli_close( $db_connect );

取得結果はこちら。

/*
1	田中	30	男性
2	山田	40	女性
3	佐藤	20	女性
4	高橋	10	男性
5	鈴木	50	男性
*/

カラムを指定して取得する

「member_list」テーブルに格納されているデータのうち、カラムを指定して全件取得する方法はこちら。

"SELECT カラム名,カラム名 FROM テーブル名";

SELECT カラム名とすることで指定したカラムの値のみ取得することが出来ます。

$sql = "SELECT member_id,name FROM member_list";
$result = mysqli_query( $db_connect, $sql );

if( mysqli_num_rows( $result ) > 0 )
{
    echo "<table border>";
    while( $row = mysqli_fetch_assoc( $result ) )
    {
        echo "<tr>";
        echo "<td>" . $row["member_id"] . "</td>";
        echo "<td>" . $row["name"] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else
{
    echo "<p>データが存在しません。</p>";
}

mysqli_close( $db_connect );

取得結果はこちら。

/*
1	田中	30	男性
4	高橋	10	男性
5	鈴木	50	男性
*/

カラムの値が指定した情報のもだけ取得する

「member_list」テーブルに格納されているデータのうち、カラムの値が指定した情報のものだけ取得する方法はこちら。

"SELECT * FROM テーブル名 WHERE カラム名 = 値";

WHERE カラム名 = '値'とすることで指定したカラムの値が一致する情報だけ取得することが出来ます。

$sql = "SELECT * FROM member_list WHERE sei = '男性'";
$result = mysqli_query( $db_connect, $sql );

if( mysqli_num_rows( $result ) > 0 )
{
    echo "<table border>";
    while( $row = mysqli_fetch_assoc( $result ) )
    {
        echo "<tr>";
        echo "<td>" . $row["member_id"] . "</td>";
        echo "<td>" . $row["name"] . "</td>";
        echo "<td>" . $row["age"] . "</td>";
        echo "<td>" . $row["sei"] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else
{
    echo "<p>データが存在しません。</p>";
}

mysqli_close( $db_connect );

取得結果はこちら。

/*
1	田中	30	男性
4	高橋	10	男性
5	鈴木	50	男性
*/

数値の範囲を指定して取得する

「member_list」テーブルに格納されているデータのうち、数値の範囲を指定して取得する方法はこちら。

"SELECT * FROM テーブル名 WHERE カラム名 >= 数値";

WHERE カラム名 >= 数値とすることで数値の範囲を指定して取得することが出来ます。

$sql = "SELECT * FROM member_list WHERE age >= 30";
$result = mysqli_query( $db_connect, $sql );

if( mysqli_num_rows( $result ) > 0 )
{
    echo "<table border>";
    while( $row = mysqli_fetch_assoc( $result ) )
    {
        echo "<tr>";
        echo "<td>" . $row["member_id"] . "</td>";
        echo "<td>" . $row["name"] . "</td>";
        echo "<td>" . $row["age"] . "</td>";
        echo "<td>" . $row["sei"] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else
{
    echo "<p>データが存在しません。</p>";
}

mysqli_close( $db_connect );

取得結果はこちら。

/*
1	田中	30	男性
2	山田	40	女性
5	鈴木	50	男性
*/

その他、比較演算子は以下の通りです。

  • 「>=」・・・以上(その数値を含む)
  • 「>」・・・大きい(その数値を含まない)
  • 「<=」・・・以下(その数値を含む)
  • 「<」・・・小さい(その数値を含まない)

数値の範囲を指定して取得(ANDを使用)する

「member_list」テーブルに格納されているデータのうち、数値の範囲を指定して取得(ANDを使用)する方法はこちら。

"SELECT * FROM テーブル名 WHERE カラム名 >= 数値 AND カラム名 <= 数値";

WHERE カラム名 >= 数値 AND カラム名 <= 数値とすることで数値の範囲をさらに指定して取得することが出来ます。

$sql = "SELECT * FROM member_list WHERE age >= 20 AND age <= 40";
$result = mysqli_query( $db_connect, $sql );

if( mysqli_num_rows( $result ) > 0 )
{
    echo "<table border>";
    while( $row = mysqli_fetch_assoc( $result ) )
    {
        echo "<tr>";
        echo "<td>" . $row["member_id"] . "</td>";
        echo "<td>" . $row["name"] . "</td>";
        echo "<td>" . $row["age"] . "</td>";
        echo "<td>" . $row["sei"] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else
{
    echo "<p>データが存在しません。</p>";
}

mysqli_close( $db_connect );

取得結果はこちら。

/*
1	田中	30	男性
2	山田	40	女性
3	佐藤	20	女性
*/

その他、比較演算子は以下の通りです。

  • 「>=」・・・以上(その数値を含む)
  • 「>」・・・大きい(その数値を含まない)
  • 「<=」・・・以下(その数値を含む)
  • 「<」・・・小さい(その数値を含まない)

数値の範囲を指定して取得(BETWEENを使用)する

「member_list」テーブルに格納されているデータのうち、数値の範囲を指定して取得(BETWEENを使用)する方法はこちら。

"SELECT * FROM テーブル名 WHERE カラム名 BETWEEN 数値 AND 数値";

WHERE カラム名 BETWEEN 数値 AND 数値と指定することで、先ほどのANDと同じように指定することが出来ます。

$sql = "SELECT * FROM member_list WHERE age BETWEEN 20 AND 40";
$result = mysqli_query( $db_connect, $sql );

if( mysqli_num_rows( $result ) > 0 )
{
    echo "<table border>";
    while( $row = mysqli_fetch_assoc( $result ) )
    {
        echo "<tr>";
        echo "<td>" . $row["member_id"] . "</td>";
        echo "<td>" . $row["name"] . "</td>";
        echo "<td>" . $row["age"] . "</td>";
        echo "<td>" . $row["sei"] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else
{
    echo "<p>データが存在しません。</p>";
}

mysqli_close( $db_connect );

取得結果はこちら。

/*
1	田中	30	男性
2	山田	40	女性
3	佐藤	20	女性
*/

指定した値で並び替えて取得する

「member_list」テーブルに格納されているデータを、指定した値で並び替えて取得する方法はこちら。

/* 昇順の場合 */
"SELECT * FROM テーブル名 ORDER BY カラム名 ASC";

/* 降順の場合 */
"SELECT * FROM テーブル名 ORDER BY カラム名 DESC";

ORDER BY カラム名 ASCとすることで昇順、ORDER BY カラム名 DESCとすることで降順で値を取得することが出来ます。

昇順の場合はこちら。

/* 昇順の場合 */
$sql = "SELECT * FROM member_list ORDER BY age ASC";
$result = mysqli_query( $db_connect, $sql );

if( mysqli_num_rows( $result ) > 0 )
{
    echo "<table border>";
    while( $row = mysqli_fetch_assoc( $result ) )
    {
        echo "<tr>";
        echo "<td>" . $row["member_id"] . "</td>";
        echo "<td>" . $row["name"] . "</td>";
        echo "<td>" . $row["age"] . "</td>";
        echo "<td>" . $row["sei"] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else
{
    echo "<p>データが存在しません。</p>";
}

mysqli_close( $db_connect );

取得結果はこちら。

/*
4	高橋	10	男性
3	佐藤	20	女性
1	田中	30	男性
2	山田	40	女性
5	鈴木	50	男性
*/

続いて、降順の場合はこちら。

/* 降順の場合 */
$sql = "SELECT * FROM member_list ORDER BY age DESC";
$result = mysqli_query( $db_connect, $sql );

if( mysqli_num_rows( $result ) > 0 )
{
    echo "<table border>";
    while( $row = mysqli_fetch_assoc( $result ) )
    {
        echo "<tr>";
        echo "<td>" . $row["member_id"] . "</td>";
        echo "<td>" . $row["name"] . "</td>";
        echo "<td>" . $row["age"] . "</td>";
        echo "<td>" . $row["sei"] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else
{
    echo "<p>データが存在しません。</p>";
}

mysqli_close( $db_connect );

取得結果はこちら。

/*
5	鈴木	50	男性
2	山田	40	女性
1	田中	30	男性
3	佐藤	20	女性
4	高橋	10	男性
*/

件数を指定して取得する

「member_list」テーブルに格納されているデータを、件数を指定して取得する方法はこちら。

"SELECT * FROM テーブル名 LIMIT 数値";

LIMIT 数値することで、取得件数を指定することが出来ます。

$sql = "SELECT * FROM member_list LIMIT 2";
$result = mysqli_query( $db_connect, $sql );

if( mysqli_num_rows( $result ) > 0 )
{
    echo "<table border>";
    while( $row = mysqli_fetch_assoc( $result ) )
    {
        echo "<tr>";
        echo "<td>" . $row["member_id"] . "</td>";
        echo "<td>" . $row["name"] . "</td>";
        echo "<td>" . $row["age"] . "</td>";
        echo "<td>" . $row["sei"] . "</td>";
        echo "</tr>";
    }
    echo "</table>";
}
else
{
    echo "<p>データが存在しません。</p>";
}

mysqli_close( $db_connect );

取得結果はこちら。

/*
1	田中	30	男性
2	山田	40	女性
*/

まとめ

いかがでしたか?
SELECT文はこの他にもいろいろな指定方法があります。
SELECT文を使いこなすことで複雑な条件のデータ抽出も可能になります。
是非いろいろな方法を覚えたいですね。