Я дошел до того, что мне абсолютно необходим какой-то чистый способ безопасной передачи списков / массивов из php в хранимые процедуры SQL-сервера и функции табличных значений. Драйвер сервера PHP SQL по-прежнему не поддерживает табличные параметры, согласно Документы Microsoft.
В Другой вопрос, использование XML было предложено в качестве альтернативы.
У кого-нибудь есть пример кода для передачи эквивалента TVP с использованием потока XML и PHP PDO или другой чистой альтернативы?
Примитивное, но надежное решение состоит в том, чтобы передать ее в виде строки с разделителями и использовать функцию SPLIT в вашем процессе для преобразования строки в таблицу, к которой вы затем можете присоединиться.
Google SQL SPLIT FUNCTION, чтобы получить бесплатный код «вырезать и вставить».
Вы могли бы использовать xml, но лучшей, более компактной идеей было бы использование JSON.
$myArray = array("thing 1", "thing 2", "thing 3");
$sql = $pdo->prepare("INSERT INTO `table` (`array_data`) VALUES (:myArray)");
$sql->execute(array(":myArray"=>json_encode($myArray)));
Затем, когда вы извлекаете данные обратно из базы данных, вы можете преобразовать их обратно в массив с помощью:
$myArray = json_decode($res['myArray'], true);