MySQLは、リレーショナルデータベース管理システムの事ですが、今回はPHPでMySQLデータベースとやり取りするための拡張機能MySQLi(MySQL Improved)を紹介します。
PHPはサーバーサイドのスクリプト言語として広く使用されており、その中でもMySQLデータベースと連携するためのMySQLi拡張機能は非常に強力なツールです。
MySQLiを使用してデータベースからデータを取得する方法について詳しく解説します。
MySQLiとは
MySQLi(MySQL Improved)は、MySQLデータベースと連携するためのPHP拡張機能です。
MySQLiは、MySQL拡張機能の改良版であり、オブジェクト指向インターフェースと手続き型インターフェースの両方を提供します。
また、プリペアドステートメントやトランザクションなど、MySQLの最新機能もサポートしています。
データベース接続
MySQLiを使用してデータベースに接続する基本的な方法は以下の通りです。
例:データベース接続
$mysqli = new mysqli("localhost", "user_name", "user_pass", "my_db");
if ($mysqli->connect_error) {
die("接続失敗: " . $mysqli->connect_error);
}
データの取得
データベースからデータを取得するためには、SQLクエリを実行し、その結果を処理する必要があります。以下に、MySQLiを使用してデータを取得する方法を示します。
例:データ取得
$key = $_GET['id'];
$sql = "SELECT id, title FROM tours WHERE id = ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("i", $key);
$stmt->execute();
$stmt->bind_result($id, $title);
while ($stmt->fetch()) {
echo "ID: $id, Title: $title";
}
$stmt->close();
この例では、prepare
メソッドを使用してSQLステートメントを準備し、bind_param
メソッドを使用して変数をバインドしています。これにより、SQLインジェクション攻撃を防ぐことができます。execute
メソッドでクエリを実行し、bind_result
メソッドで結果を変数にバインドしています。
bind_resultメソッド
bind_result
メソッドは、プリペアドステートメントの実行結果を変数にバインドします。このメソッドを使用することで、SQLクエリの結果を簡単に処理することができます。
例:bind_resultの使用
$stmt->bind_result($id, $title);
while ($stmt->fetch()) {
echo "ID: $id, Title: $title";
}
まとめ
MySQLiは、PHPとMySQLデータベースを連携させるための強力なツールです。
データベース接続、データ取得、プリペアドステートメントの使用方法を理解することで、効率的で安全なデータベース操作が可能になります。
ウェブデザイン技能検定においても、MySQLiの基本的な使い方を理解していることが求められます。
MySQLi以外にもPDOというものがあったりと他にもデータベースとの接続方法がありますので、機会があったら紹介したいと思います。
2024年現在、私のまわりではPDOという方法を使用されている方が多く感じます。