Как использовать Reflection для вставки данных с помощью mysqli методом bind_param? В чем разница этих двух массивов?

Как 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);

В этой части я использую Reflection, чтобы передать массив второму параметру bind_param() метод $this->$stmt объект.

$method->invokeArgs($this->stmt, $values);

Это не делает mysqli вставкой в ​​таблицу с 1-опцией.

Но mysqli вставляет данные, когда я использую 2 варианта. Зачем? Я должен использовать с 1-опцией, так как количество параметров неизвестно.

Как я могу извлечь выгоду из Reflection и MySQL это?

В чем разница между этими двумя вариантами (массивами)?

2

Решение

Вы можете использовать оператор сплат (версия PHP> = 5.6):

public function insert($data)
{
$stmt = $this->link->prepare($sql);
$stmt->bind_param(str_repeat('s', count($data), ...$data);
$stmt->execute();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector