Передача массива в функцию / хранимую процедуру SQL Server с использованием PHP PDO

Я дошел до того, что мне абсолютно необходим какой-то чистый способ безопасной передачи списков / массивов из php в хранимые процедуры SQL-сервера и функции табличных значений. Драйвер сервера PHP SQL по-прежнему не поддерживает табличные параметры, согласно Документы Microsoft.

В Другой вопрос, использование XML было предложено в качестве альтернативы.

У кого-нибудь есть пример кода для передачи эквивалента TVP с использованием потока XML и PHP PDO или другой чистой альтернативы?

0

Решение

Примитивное, но надежное решение состоит в том, чтобы передать ее в виде строки с разделителями и использовать функцию SPLIT в вашем процессе для преобразования строки в таблицу, к которой вы затем можете присоединиться.

Google SQL SPLIT FUNCTION, чтобы получить бесплатный код «вырезать и вставить».

1

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

Вы могли бы использовать 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);
0

По вопросам рекламы [email protected]