作为类的bind_param($types, $var1, $var2, $var3,..)
方法,mysqli_stmt
它只获得一系列$variables
第二个参数(我想在那里传递数组),并且$variables
在我的情况下数量是未知的,我想在我的insert($data)
函数中使用反射。http://php.net/manual/ru/mysqli-stmt.bind-param.php
我没有展示我的功能中不必要的部分,以避免混淆......
public function insert($data)
{
$types = 'sss';
$values = array_values($data);
删除了不相关的代码
$ref = new ReflectionClass($this->stmt);
$method = $ref->getMethod("bind_param");
//array_unshift($values,$types); 1-option
$values = array($types,'alex','alex@code.com','cats'); 2-option
$method->invokeArgs($this->stmt, $values);
$done = $this->stmt->execute();
$this->stmt->close();
return $done;
}
如图所示
$method = $ref->getMethod("bind_param");
$method->invokeArgs($this->stmt, $values);
在这一部分中,我使用反射将数组传递给对象bind_param()
方法的第二个参数。$this->$stmt
$method->invokeArgs($this->stmt, $values);
它不会使 mysqli 使用 1-option 插入表中。
但是当我使用 2-option 时,mysqli 会插入数据。为什么?我必须使用 1-option,因为参数的数量是未知的。
我怎样才能从 Reflection 和 mysqli 中受益呢?
这两个选项(数组)有什么区别?