この記事はだいたい 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からデータを取得する方法をまとめました。
いろいろな方法があるので、私のような初心者には選択肢が多くて迷ってしまいますね。
バグらなければいいってわけでもないと思うので、ちゃんと勉強しよう。。。
おわり。