私はmySQLデータベースに接続して、通常の方法でいくつかのクエリを実行するWebサイトを持っています。私は以下よりも複雑なことは何もしていません:
$result = mysql_query('SELECT * FROM table WHERE condition = "'.mysql_real_escape_string($_POST['condition']).'"');
$row = mysql_fetch_assoc($result);
echo $row['var1'].' '.$row['var2'];
そしてそれは動作します。しかし、私はプリペアドステートメントについて読んでいて、それらはより高いセキュリティを提供するようであり、それらを使用してデータベース呼び出しをいくつかのプリペアドステートメントに置き換えたいので、mysqliクラスを見てきました。
しかし、同じことを実現するためのコードははるかに多いようです。上記を取得するには、これを行う必要があることを理解しています。
$stmt = $db->stmt_init();
if($stmt->prepare('SELECT * FROM table WHERE condition = ?')) {
$condition = $_POST['condition'];
$stmt->bind_param('s', $condition);
$stmt->execute();
$stmt->bind_result($var1, $var2, ...);
if ($stmt->fetch()) {
echo $var1 . ' - ' . $var2;
}
}
ですから、それはもっとたくさんのコードの地獄のようで、管理するのが少し難しいようです。私はこれらの使い方を誤解していますか、それとも「通常の」PHPのことを行うためのより短い方法がありますか?
- $ rowにデータを入力します。これは、データベースからの1行を表す配列です。
- 行をループし、$rowに「次の行」を補充します。
- 通常のUPDATE照会。
上記はすべて「通常」実行するのに便利で迅速ですが、プリペアドステートメントを使用するとさらに多くの行が必要になるようです。