2

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 つのオプション (配列) の違いは何ですか?

4

1 に答える 1