bind_param($types, $var1, $var2, $var3,..)
クラスのメソッドとして、2番目のパラメーターの後mysqli_stmt
に一連のパラメーターを取得し$variables
ます(そこに配列を渡したい)。$variables
私の場合、その数は不明ですinsert($data)
。関数でリフレクションを使用したいです。http://php.net/manual/ru/mysqli-stmt.bind-param.php
混乱を避けるために、関数の不要な部分は示していません...
public function insert($data)
{
$types = 'sss';
$values = array_values($data);
無関係なコードを削除
$ref = new ReflectionClass($this->stmt);
$method = $ref->getMethod("bind_param");
//array_unshift($values,$types); 1-option
$values = array($types,'alex','alex@code.com','cats'); 2-option
$method->invokeArgs($this->stmt, $values);
$done = $this->stmt->execute();
$this->stmt->close();
return $done;
}
に示すように
$method = $ref->getMethod("bind_param");
$method->invokeArgs($this->stmt, $values);
この部分では、リフレクションを使用して、配列をオブジェクトのbind_param()
メソッドの2 番目のパラメーターに渡し$this->$stmt
ます。
$method->invokeArgs($this->stmt, $values);
1-option では mysqli をテーブルに挿入しません。
しかし、mysqli は 2 オプションを使用するとデータを挿入します。なんで?パラメータの数が不明なため、1 オプションで使用する必要があります。
Reflection と mysqli からどのように利益を得ることができますか?
これら 2 つのオプション (配列) の違いは何ですか?