我正在为OOP
编写mysqli
数据库类。我希望所有查询都准备好,但是我很难动态地将参数绑定到查询。
我希望查询方法API看起来像这样
query($sql, $param)
但是,我不知道如何在方法中动态绑定参数。我在PHP
手册中搜索了示例,并查看了以下代码:
$method = new ReflectionMethod('mysqli_stmt', 'bind_param');
$method->invokeArgs($stmt, $params);
$stmt->execute();
我知道ReflectionMethod()
将执行对象或类的方法,但我不明白它在这种情况下是如何工作的,考虑到每个参数都有一个type
,应该指定binding
。
如何动态绑定参数?
其次,ReflectionMethod()
在这种情况下如何运作?
答案 0 :(得分: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;
}