没有为准备好的语句php中的参数提供数据

时间:2016-07-19 14:33:54

标签: php database sql-insert

帮助,我在连接类中创建了一个方法,该方法连接到本地数据库以插入记录。我允许允许将参数传递给方法以动态选择表,列和值。

在这个方法中,我将列和占位符内插到查询中,这很好。我遇到的问题是将值绑定到占位符。我一直收到一条错误,声明“预备语句中的参数没有提供数据”。我在这里搜索了一些相同的问题但似乎没有解决我的问题。感谢

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);
    }
}

1 个答案:

答案 0 :(得分:0)

你的$param_type暗示,你已经知道你将拥有多少列(4),但你的功能似乎是“变量”。如果你的功能没有完全准确4个值,它将失败,因为ssis恰好是4个参数。

解决方案可能是,您查看列并记住,当整数字段到来并相应地构建您的$param_type字符串时。或者,如果允许值的任何类型组合,那么,你得到的图片......我希望。