call_user_func_array で mysqli の bind_param を呼び出しをまとめつつ、汎用性をもたせたい bind_param は 第2引き数以降が参照渡しでなければならないので、渡す配列を作成する段階で参照渡しを入れておく必要があるが、毎回面倒なので配列を再生成することで落ち着く // 警告が出るパターン // Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in $params = array ( 'i' , 2 ); call_user_func_array ( array ( $stmt , 'bind_param' ), $params ); // 引き数を意識するパターン $id = 2 ; $params = array (); $params [] = 'i' ; $params [] = & $id ; // パラメータは参照渡し call_user_func_array ( array ( $stmt , 'bind_param' ), $params ); // お手軽なパターン $params = array ( 'i' , 2 ); for ( $i = 1 ; $i < count ( $params ); $i ++){ // 2番目以降を参照渡しに書き換え $params [ $i ] = & $params [ $i ]; } call_user_func_array ( array ( $stmt , 'bind_param' ), $params ); ここで $params を作成する時に foreach($data as $key => $value){ $params[] = &$value } の様に行ってはいけません 上記は $value 参照を代入することになり、次のループで $value が書き換えられ、結果的に配列の最後の値を全てが参照することになります for...