PHP

【備忘録】mysqli_stmt_get_resultの実装手順(PHP×MySQL)

投稿日:2020年6月18日 更新日:

この記事はだいたい 3 分ほどで読めます。

PHPで条件を付けてSELECT文を発行し、MySQLからデータを取得する方法を記事にしました。

確認した環境

  • OS Windows10
  • XAMPP ver.7.4.6

動かした人

  • 普段PHPを使ってない
  • エンジニア歴10数年
  • 既婚
programing

データの取得方法

検索条件を付けて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

プリペアードステートメントから結果セットを取得する。

mysqli_stmt_get_result

パラメータ

$stmt

mysqli_stmt_init() が返すステートメントID。

戻り値

SELECTクエリが成功した場合は結果セットを返す。

SELECTクエリ以外のDMLクエリを実行した場合やSELECTクエリが失敗した場合はFALSEを返す。

まとめ

PHPで条件を付けてSELECT文を発行してMySQLからデータを取得する方法をまとめました。

いろいろな方法があるので、私のような初心者には選択肢が多くて迷ってしまいますね。

バグらなければいいってわけでもないと思うので、ちゃんと勉強しよう。。。

おわり。

-PHP
-, , ,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

search

簡単な検索フォームの実装手順(PHP×MySQL)

この記事はだいたい 5 分ほどで読めます。 検索条件を入力して結果を表示する簡単な検索フォームをPHPとMySQLで作ってみました。 確認した環境 OS Windows10XAMPP ver.7.4. …

programmer

【備忘録】 mysqli_connect でデータベースに接続する方法(PHP×MySQL)

この記事はだいたい 5 分ほどで読めます。 mysqli_connect 関数を使ってPHPでMySQLに接続する方法の備忘録です。 確認した環境 OS Windows10XAMPP ver.7.4. …

Search for…

フリーランスのITエンジニアで一人親方のページです

趣味は犬の散歩と洗車と草むしり

[IT系のこと・興味のあること・日常のこと]を記事にしています