1

Как передать массив в подготовленные выражения?

$vht = new mysqli(…);
$sql = $vht->prepare("INSERT INTO `gg` VALUES (?, ?)"); 
$sql->bind_param('si', $name, $date); **<<<< сюда**
$name = 'Имя';
$date = 18;
$sql->execute(); 
$sql->close();
  • Это невозможно. только в цикле по массиву вызывать execute – Mike Jan 23 '16 at 13:54
  • Mike, а в PDO?! – LittleByte Jan 23 '16 at 14:02
  • Это ни какое средство доступа к базе не обеспечит. mysql видит 2 вопросительные знака - значит переменных 2. – Mike Jan 23 '16 at 14:05

1 Answers1

1

В mysqli необходимо использовать call_user_func_array();

В PDO и можно, и рекомендуется передавать сразу массив:

$name = 'Имя';
$date = 18;
$massiv = [$name, $date];

$pdo->prepare("INSERT INTO `gg` VALUES (?, ?)")->execute($massiv); 

Есл же массив содержит данные для нескольких вставок - то этот массив следует перебирать в цикле и выполнять подготовленное выражение внутри этого цикла.

  • Ипатьев, не совсем понял ваш пример, вот mysqli там мы выставляем ещё типы s/i/... в pdo разве не нужно такого делать? – LittleByte Jan 24 '16 at 11:10
  • Можно, но не нужно. Любые переменные можно передавать в Mysql с типом string - что PDO и делает. – Ипатьев Jan 24 '16 at 11:12