この記事はだいたい 3 分ほどで読めます。
PHPで条件を付けてSELECT文を発行し、MySQLからデータを取得する方法を記事にしました。
確認した環境
- OS Windows10
- XAMPP ver.7.4.6
動かした人
- 普段PHPを使ってない
- エンジニア歴10数年
- 既婚

目次
データの取得方法
検索条件を付けてSELECT文を発行して結果を取得します。
Apatchのルートディレクトリに testdbフォルダを作成。
testdbフォルダに index.phpを作成します。
検索用のデータベースを用意します。
この記事ではこちらの記事で作成したデータベースを使用しています。>>【phpMyAdmin】SQL文を使ってレコードの作成・削除・更新をしてみる
コード
下記条件でデータを取得します。
- usersテーブルを検索
- 検索条件は user_id BETWEEN ? AND ?
- カラム user_idの型は数値型
<?php
// phpからMySQLに接続
//ホスト名
$servername = "localhost";
//ユーザー名
$user = "root";
//パスワード
$password = "";
//db名
$dbname = "testdb";
// 接続
$conn = mysqli_connect($servername, $user, $password, $dbname);
// 接続確認
if (mysqli_connect_errno()) {
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
}
// セレクト文作成
$sql = "SELECT user_id , user_last, user_first, user_age FROM users WHERE user_id BETWEEN ? AND ? ";
//バインド変数
$val1 = 2;
$val2 = 3;
// バインド変数の型
$types = "ii";
// ステートメントID取得
$stmt = mysqli_stmt_init($conn);
// SQLステートメントを実行する準備
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "SQL ERROR!";
} else {
// パラメータにバインドする
mysqli_stmt_bind_param($stmt, $types, $val1, $val2);
// クエリを実行
mysqli_stmt_execute($stmt);
// 結果セット取得
$result = mysqli_stmt_get_result($stmt);
// 行数取得
$rows = mysqli_num_rows($result);
echo $rows . "件取得しました!";
echo "<hr>";
// 値を取得する
while ($row = mysqli_fetch_assoc($result)) {
print_r($row);
echo "<br>";
}
// 閉じる
mysqli_stmt_close($stmt);
}
// 接続を閉じる
mysqli_close($conn);確認
ブラウザで確認してみます。
URLにlocalhost/testdbと入力して結果を出力します。

指定した条件でデータが取得できました。
使用した関数
使用した関数について確認します。
- mysqli_stmt_init
- mysqli_stmt_prepare
- mysqli_stmt_bind_param
- mysqli_stmt_execute
- mysqli_stmt_get_result
- mysqli_num_rows
- mysqli_fetch_assoc
- mysqli_stmt_close
mysqli_stmt_get_result
プリペアードステートメントから結果セットを取得する。

パラメータ
$stmt
mysqli_stmt_init() が返すステートメントID。
戻り値
SELECTクエリが成功した場合は結果セットを返す。
SELECTクエリ以外のDMLクエリを実行した場合やSELECTクエリが失敗した場合はFALSEを返す。
まとめ
PHPで条件を付けてSELECT文を発行してMySQLからデータを取得する方法をまとめました。
いろいろな方法があるので、私のような初心者には選択肢が多くて迷ってしまいますね。
バグらなければいいってわけでもないと思うので、ちゃんと勉強しよう。。。
おわり。