【问题标题】:No data supplied for parameters in prepared statement php没有为准备好的语句 php 中的参数提供数据
【发布时间】:2016-07-19 14:33:54
【问题描述】:

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

在这种方法中,我将列和占位符内爆到查询中,这很好。我遇到的问题是将值绑定到占位符。我不断收到一条错误消息,指出“没有为准备好的语句中的参数提供数据”。我在这里搜索了一些相同的问题,但似乎没有一个可以解决我的问题。谢谢

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

【问题讨论】:

    标签: php database sql-insert


    【解决方案1】:

    您的 $param_type 建议,您已经知道将有多少列 (4),但您的函数似乎是“变量”。如果您的函数没有得到正好 4 个值,它会失败,因为ssis 正好是 4 个参数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多