0

我正在OOPmysqli. 我希望准备好所有查询,但是我在将参数动态绑定到查询时遇到了困难。我希望查询方法 API 看起来像这样

query($sql, $param)

但是,我不知道如何在方法中动态绑定参数。我在手册中搜索示例PHP并看到如下代码:

$method = new ReflectionMethod('mysqli_stmt', 'bind_param'); 
$method->invokeArgs($stmt, $params);    
$stmt->execute(); 

我知道ReflectionMethod() 将执行对象或类的方法,但我不明白在这种情况下它是如何工作的,考虑到每个参数都有一个type应该指定的 while binding

如何动态绑定参数?

ReflectionMethod()其次,在这种情况下如何工作?

4

1 回答 1

0

我一直使用我编写的这个自定义函数来处理 mysqli,它对我有用。

public function execute_prepared_query_reflection ($array_list)
    {
        $ret_stmt = mysqli_prepare($this->conn, $this->sql);    
        //call_user_func_array('mysqli_stmt_bind_param', array_merge (array($this->statement, $param_listtypes), $param_list));
        //$this->statement->bind_param("issdssssss", $param_staffid, $param_duration, $param_dateappraised, $param_totalmark, $param_detailBySuperv, $param_sumByHead, $param_recommendation, $param_enteredby);
        if ($ret_stmt!=false)
        {
            $method    = new ReflectionMethod('mysqli_stmt', 'bind_param');
            $method->invokeArgs($ret_stmt, $this->createArrayRef($array_list));               
            $retvar = $ret_stmt->execute();  
        } 
        $method = null;
        $ret_stmt = null;

    }   
于 2016-12-28T18:15:53.023 回答