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

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

Patricia Arquette
リリース: 2024-12-01 19:11:14
オリジナル
868 人が閲覧しました

How Can I Dynamically Bind MySQL Parameters in PHP?

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

お気づきのように、PHP の MySQLi 拡張機能の bind_param メソッドは、複数のパラメータまたはパラメータのないクエリを動的に処理するという点で制限される可能性があります。この問題に対処するための戦略は次のとおりです。

call_user_func_array の使用

次のコード スニペットを使用すると、パラメータの配列を動的に作成してバインドできます。

if (strnatcmp(phpversion(), '5.3') >= 0) {
    $refs = array();
    foreach ($arr as $key => $value)
        $array_of_params[$key] = &$arr[$key];
    call_user_func_array(array(&$stmt, 'bind_params'), $array_of_params);
}
ログイン後にコピー

PHP 5.6 の使用構文

PHP 5.6 以降では、アンパック演算子と get_result() メソッドを利用できます:

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();
}
ログイン後にコピー

例:

$mysqli = new database(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$output = new search($mysqli);

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

$res = $output->get_custom_result($sql, 'ss', array('1', 'Tk'));
while ($row = res->fetch_assoc()) {
    echo $row['fieldName'] . '<br>';
}
ログイン後にコピー

これらのソリューションは、より柔軟でダイナミックな機能を提供しますMySQL クエリのバインディング機能。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート