duanjumie8753 2014-01-02 15:37
浏览 59
已采纳

使用call_user_func_array调用bind_param mysqli prepared statement [duplicate]

This question already has an answer here:

I have a function that can take any number of parameters like below:

public function executePreparedStatement($query, $paramString = ''){
    $stmt = $this->db->prepare($query);
    if (func_num_args() > 2){
        $parameters = func_get_args();
        array_shift($parameters); // Get rid of the query
        $parameters = array('s', 'email@email.com');  //Hard code for test
        call_user_func_array(array($stmt, "bind_param"), $parameters);
        // $stmt->bind_param($parameters[0], $parameters[1]); //Hard code for test
    }
    $stmt->execute();
    $this->result = $stmt->get_result();
    $stmt->close();
}

The problem is when I run the code as is, The stmt object displays:

No data supplied for parameters in prepared statement

But when I comment out the call_user_func_array call and uncomment the subsequent line, the query works.

</div>
  • 写回答

1条回答 默认 最新

  • dongse7261 2014-01-02 16:26
    关注

    @Bill_Karwin commented this is a duplicate. I found the solution in that answer. Below is my function (I had to make the values of the parameters be references):

    public function executePreparedStatement($query, $paramString = ''){
        $stmt = $this->db->prepare($query);
        if (func_num_args() > 2){
            $parameters = func_get_args();
            array_shift($parameters); // remove the query from the list
            // Array needs to be bound by reference
            foreach ($parameters as $key=>&$value) {
                $parameters[$key] = &$value;
            }
            call_user_func_array(array($stmt, "bind_param"), $parameters);
        }
        $stmt->execute();
        $this->result = $stmt->get_result();
        $stmt->close();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 asp.textbox后台赋值前端不能显示什么原因
  • ¥15 宇视监控服务器无法登录
  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥15 DruidDataSource一直closing
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误