ホームページ  >  記事  >  バックエンド開発  >  PHP で空の値を処理するときに「bind_param()」を使用してパラメータを動的にバインドするにはどうすればよいですか?

PHP で空の値を処理するときに「bind_param()」を使用してパラメータを動的にバインドするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 09:17:02675ブラウズ

How to Dynamically Bind Parameters with `bind_param()` When Handling Empty Values in PHP?

bind_param() による動的変数バインディング

bind_param() の入力変数の可変数を扱う場合、空の値の処理は問題になる可能性があります。チャレンジ。プレースホルダー文字列で「...」を使用しようとすると、$_POST 値が空であるため、実行できない可能性があります。

この問題の解決策は、call_user_func_array() を使用して可変数の引数をbind_param に渡すことです。 () メソッド:

<code class="php">$parameterNames = array('myvar1', 'myvar2', /* ... */);
$parameters = array();
foreach ($parameterNames as $name) {
    if (isset($_POST[$name]) && $_POST[$name] != '') {
        $parameters[$name] = $_POST[$name];
    }
}

if (count($parameters)) {
    $query = 'UPDATE mytable SET ';
    foreach ($parameters as $name => $value) {
        $query .= $name.'=?,';
    }
    $query = substr($query, 0, -1); // Remove trailing comma
    $query .= 'WHERE id = ?';

    $statement = $mysqli->prepare($query);
    $typeString = str_repeat('s', count($parameters));
    $parameters = array_merge(array($typeString), array_values($parameters));
    call_user_func_array(array($statement, 'bind_param'), $parameters);
}</code>

このアプローチにより、使用可能な $_POST 値に基づいて SQL クエリを動的に生成し、空でない値のみが更新ステートメントに含まれるようにすることができます。

以上がPHP で空の値を処理するときに「bind_param()」を使用してパラメータを動的にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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