MySQL の PHP 配列を使用したクエリの実行
MySQL クエリに組み込む必要がある要素の配列がある場合、次のようにすることができます。どうやって効率的に処理すればいいのか不思議です。 PHP では、これを実現するための複数のアプローチがあります。
プリペアド ステートメントの使用
プリペアド ステートメントは、動的パラメータ値を使用してクエリを実行する安全かつ効率的な方法です。 ID の配列でプリペアド ステートメントを使用するには:
$ids = [2, 4, 6, 8]; $sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id = ?"; $stmt = $mysqli->prepare($sql); for ($i = 0; $i < count($ids); $i++) { $stmt->bind_param("i", $ids[$i]); $stmt->execute(); echo "Updated record ID: $id\n"; } $stmt->close();
複数のパラメーター プレースホルダーの代替アプローチ
複数のフィールドをそれぞれ同じデータで更新する必要がある場合配列内の ID では、複数のパラメーターを含む単一のクエリを使用できますプレースホルダー:
$ids = [2, 4, 6, 8]; $params = implode(",", array_fill(0, count($ids), "?")); $sql = "UPDATE MyTable SET LastUpdated = GETDATE() WHERE id IN ($params)"; $stmt = $mysqli->prepare($sql); // Dynamic call for parameter binding $types = str_repeat("i", count($ids)); $args = array_merge(array($types), $ids); call_user_func_array(array($stmt, 'bind_param'), ref($args)); // Execute once for all input values $stmt->execute(); $stmt->close(); echo "Updated record IDs: " . implode(",", $ids) . "\n";
適切なアプローチの選択
準備されたステートメントを使用した反復アプローチは、複数のレコードを 1 つずつ更新する必要がある UPDATE および INSERT 操作に適しています。 。複数パラメータのアプローチは、SELECT 操作や DELETE 操作、または同じデータで複数のレコードを更新する必要がある場合に効率的です。
準備されたステートメントの利点
データの整合性とパフォーマンスを確保するために、小さな配列であってもプリペアド ステートメントを使用することを忘れないでください。
以上がPHP 配列を使用して MySQL クエリを効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。