call_user_func_array() expects parameter 2 to be array, object given code example

Example: call_user_func_array() expects parameter 1

//call_user_func_array() expects parameter 1 to be a valid callback, first array member is not a valid class name or object  
//Fatal error: Uncaught Error: Call to a member function execute() on boolean
function bindQueryParams($sql, $param_type, $param_value_array) {
        $param_value_reference[] = & $param_type;
        for($i=0; $i<count($param_value_array); $i++) {
            $param_value_reference[] = & $param_value_array[$i];
        }
        call_user_func_array(array( $sql,
            'bind_param'
        ), 
        $param_value_reference);
    }
    
    function insert($query, $param_type, $param_value_array) {
        $sql = $this->conn->prepare($query);
        $this->bindQueryParams($sql, $param_type, $param_value_array);
        $sql->execute();
    }
    
    function update($query, $param_type, $param_value_array) {
        $sql = $this->conn->prepare($query);
        $this->bindQueryParams($sql, $param_type, $param_value_array);
        $sql->execute();
    }