ホームページ >バックエンド開発 >PHPチュートリアル >PHP でパラメータを MySQL クエリに動的にバインドするにはどうすればよいですか?

PHP でパラメータを MySQL クエリに動的にバインドするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-03 01:00:14988ブラウズ

How Can I Dynamically Bind Parameters to MySQL Queries in PHP?

PHP での MySQL パラメータの動的バインド

アプリケーションでは、準備された SQL クエリにパラメータを動的にバインドする必要があるシナリオに遭遇します。現在のアプローチは機能しますが、特にさまざまな数のパラメーターを処理する場合、汎用性に欠けます。

必要な柔軟性を実現するには、call_user_func_array() とアンパック演算子 (...$) を使用して次の手法を活用できます。 var):

public function get_custom_result($sql, $types = null, $params = null) {
    $stmt = $this->mysqli->prepare($sql);
    $stmt->bind_param($types, ...$params);

    if (!$stmt->execute()) return false;
    return $stmt->get_result();
}

この更新された get_custom_result() メソッドを使用すると、パラメータのタイプと値を動的に指定できます。それぞれ $types 引数と $params 引数。 ...$params 構文は配列を解凍し、各値を個別に binding_param() メソッドに渡します。

たとえば、次のクエリとパラメータの値を考えてみましょう。

$sql = "
SELECT *
FROM root_contacts_cfm
WHERE root_contacts_cfm.cnt_id = ?
AND root_contacts_cfm.cnt_firstname = ?
ORDER BY cnt_id DESC";

$params = ['1', 'Tk'];

次に、動的パラメータ バインディングを使用してクエリを実行します:

$res = $output->get_custom_result($sql, 'ss', $params);

while ($row = $res->fetch_assoc()) {
    echo $row['fieldName'] .'<br>';
}

以上がPHP でパラメータを MySQL クエリに動的にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。