MySQLi プリペアド ステートメント: 包括的な概要
MySQLi プリペアド ステートメントは、データベース対話のセキュリティと効率を強化します。ただし、それらを使い始めるのは難しい場合があります。
エラー: 非バインド ステートメントの使用
提供されたコードでは、準備済みステートメント "$" を実行しようとしたときにエラーが発生します。 stmt」にパラメータをバインドせずに実行します。 MySQLi の「mysqli_stmt_prepare()」メソッドは、準備されたステートメントを表すオブジェクトを返しますが、「mysqli_stmt_bind_param()」でプレースホルダーをバインドすることは、それを実行する前の重要な手順です。
準備されたステートメントの構文バインディング:
$stmt->bind_param('data_type', $variable);
この例では、データ型は 's' (文字列) と 'i' (整数) で、その後に挿入される値を含む PHP 変数が続きます。
$name = 'one'; $age = 1; $stmt->bind_param('si', $name, $age);
パラメーターがバインドされると、実行できるようになります。続行:
$stmt->execute();
完全な例
これは、準備されたステートメントを使用したエラー処理を伴う接続、挿入、および選択をカバーする包括的な例です:
connect_error) { die('Failed to connect: ' . $mysqli->connect_error); } // Insertion $stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?, ?)"); $stmt->bind_param('si', $name, $age); $name = 'Bob'; $age = 30; $stmt->execute(); // Selection $stmt = $mysqli->prepare("SELECT * FROM users WHERE name = ?"); $stmt->bind_param('s', $name); $name = 'Bob'; $stmt->execute(); $result = $stmt->get_result(); // Fetch and display results while ($row = $result->fetch_assoc()) { printf("%s (%s)\n", $row['name'], $row['age']); } // Closing $stmt->close(); $mysqli->close(); ?>
これらのガイドラインに従うことで、PHP のプリペアド ステートメントを MySQLi で効果的に利用し、セキュリティとデータベースの対話効率を向上させることができます。
以上がMySQLi プリペアド ステートメントを効果的に使用してデータベースのセキュリティと効率を強化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。