1

任意の量の変数を使用して、多数のストアド プロシージャのいずれかを実行するクラスを作成しようとしています。

私はphpとmysqliを使用しています

  • 私のクラスは配列を列挙し、要素がある場合はその数に基づいて文字列を構築します
  • CALL spTestLogin(?,?)たとえば、このようなものを与える
  • 次のようなものを使用して、配列からの入力をバインドする必要があります。

    $stmt->bind_param($this->paramTypes,$this->paramValues);//paramValues は私の配列です

それがうまくいけば、結果を得るために取り組むことができます

何か案は

4

2 に答える 2

3

次のようなことをしなければなりません:

$params=array_merge(
    array($this->paramTypes), 
    $this->paramValues
);
call_user_func_array(array($stmt, 'bind_param'), $params);

それ$this->paramTypesが必要な形式の文字列であるmysqli_stmt::bind_param場合、そうでない場合は、string最初にこのパラメーターを作成する必要があります。

この場合、パラメータが機能するかどうoutかはわかりません。inout

于 2008-11-11T13:10:30.453 に答える
2

mysqli_stmt::bind_param()可変数の引数を取ります

各変数(「i」、「d」、「s」、「b」のいずれか)の正しい型文字を保持する配列でもあると仮定すると$this->paramTypes、次のようなことができます。

$params = $this->paramValues;
array_unshift($params, implode($this->paramTypes));
call_user_func_array( array( $stmt, 'bind_param' ), $params);

基本的に、bind_param()に通常渡すパラメーターの配列を作成し、を使用して呼び出しを行います。call_user_func_array()

これを行うためのはるかに良い方法があるかもしれません

編集:これを書いている間に私がそれに殴られたことに気づきました、それが興味がある場合に備えて、私は今のところこの答えをここに残しておきます

于 2008-11-11T13:22:42.863 に答える