PHP MySQLi の動的バインディング
動的パラメーター バインディング
PHP MySQLi では、bind_param () メソッドを使用すると、パラメータを準備された声明。ただし、パラメータの量と型が異なる動的バインディングの場合、デフォルトの方法では不十分です。
解決策
この制限を克服するには、次の解決策を使用できます。採用:
Unpacking Operator とget_result()
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(); }
例
この例は、パラメータを動的にバインドし、 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>'; }
このアプローチは、関数呼び出しに渡されたパラメーターに基づいてパラメーターをバインドする動的方法を提供します。
以上がPHP MySQLi で動的パラメータ バインディングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。