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 サイトの他の関連記事を参照してください。