PHP:MySQLiを使ってSELECT文を実行

公開:2026.06.07(日) 13:44

MySQLiを使ってSELECT文を実行

MySQLiを使ってSELECT文を実行するには、
1. データベースに接続 (PHP:MySQLiを使ったDB接続方法)、

2. 取得したmysqliオブジェクトの stmt_init メソッドを使いステートメントを初期化する
戻り値として mysqli_stmt クラスのオブジェクトを返す。
$sth = $dbh->stmt_init();

3. stmt_init戻り値のmysqli_stmtオブジェクトの prepare メソッドでSQLステートメントを実行するための準備を行う
$sth->prepare($sql)

4. SQLにプレースホルダー(?)が含まれる場合は mysqli_stmtオブジェクトの bind_param メソッドでパラメータに値を当てはめる
メソッドの types引数 には対応するバインド変数の 変数の型 を以下の型文字を結合して指定
説明
iint
dfloat
sstring
bblob

$mincd = '2070000';
$maxcd = '2090000';
$sth->bind_param('ss', $mincd, $maxcd);

5. mysqli_stmtオブジェクトの execute メソッドでSQLを実行する

6. 実行結果を取得するための準備として mysqli_stmtオブジェクトの bind_result メソッドで結果を格納する変数を列の数だけ指定
例:実行するSQL
SELECT zipcode, pref, city, town FROM zipcodes
WHERE zipcode >= ? AND zipcode <= ?
ORDER BY zipcode ASC LIMIT 100

列 zipcode, pref, city, town をそれぞれ変数 $code, $pref, $city, $town へ格納する
$sth->bind_result($code, $pref, $city, $town);

反復可能な結果セットを取得したり、 行をオブジェクトや配列で取得したい場合は get_result メソッドを使用する

6. 実際に結果を取得しバインド変数に格納するには fetch メソッドを使用する
戻り値として、true:成功、false:エラー、null:行データなし が返るので、falseまたはnullが返るまでfetchを繰り返す

while($sth->fetch()){
  echo '<tr><td>',  htmlspecialchars($code, ENT_QUOTES, 'UTF-8');
  echo '</td><td>', htmlspecialchars($pref, ENT_QUOTES, 'UTF-8');
  echo '</td><td>', htmlspecialchars($city, ENT_QUOTES, 'UTF-8');
  echo '</td><td>', htmlspecialchars($town, ENT_QUOTES, 'UTF-8');
  echo '</td></tr>', PHP_EOL;
}

7. 最後にmysqli_stmtオブジェクトの close メソッドを呼び出して終了
$sth->close();


0 件のコメント:

その他の記事