2016-07-19 27 views
-1

ヘルプ、レコードを挿入するためにローカルデータベースに接続するメソッドを接続クラスに作成しました。私は、パラメータをテーブル、列、および値を動的に選択するためのメソッドに渡すことを許可しました。プリペアドステートメントのパラメータにデータが提供されていません。

この方法では、カラムとプレースホルダを問合せに組み込みます。これは問題ありません。私が持っている問題は、プレースホルダに値をバインドすることです。私は、準備されたステートメントの中のパラメータのためのデータが提供されていないというエラーを受けています。私はここで同じ質問をいくつか検索しましたが、私の問題を解決するものはありません。おかげ

public function InsertQuery($table, $values, $cols) 
{ 
    $placeholders = array(); 

    foreach ($values as $val) { 
     $placeholders[] = '?';  
    } 

    $placeholderList = implode(',', $placeholders); 
    $query = "INSERT INTO $table".'('.implode(',',$cols).') VALUES '. '('.$placeholderList.')'; 
    $connect = $this->dbConnection; 

    if ($stmt = $connect->prepare($query)) { 
     $param_type = array("ssis"); 
     $params_array = array_merge($param_type,$values); 
     call_user_func_array(array($stmt, 'bind_param'), $params_array); 
    } 
} 

答えて

0

あなた$param_typeあなたはすでにあなたは(4)必要があるとしているどのように多くの列を知っていることを、示唆していますが、機能している「変数」のように見えるあなたが機能している.IF取得していません正確に4つの値は、それは失敗するでしょう。ssisは正確に4つのパラメータのためです。

解決方法は、列を調べて整数フィールドが来たときに覚えておいて、それに応じて$param_type文字列を作成することです。または、値の種類の組み合わせがある場合は、まあ、あなたは写真を得る...私は願っています。

関連する問題