【问题标题】:Pass array to SQL Server Function/Stored Procedure using PHP PDO使用 PHP PDO 将数组传递给 SQL Server 函数/存储过程
【发布时间】:2015-04-30 20:31:05
【问题描述】:

我已经到了一定程度,我绝对需要一些干净的方法来安全地将列表/数组从 php 传递到 SQL 服务器存储过程和表值函数。根据Microsoft docs,PHP SQL server 驱动仍然不支持表值参数。

another question 中,建议使用 XML 作为替代方案。

有没有人提供使用 XML 流和 PHP PDO 或其他干净的替代方法传递相当于 TVP 的代码示例?

【问题讨论】:

标签: php sql-server pdo sql-server-2008-r2 table-valued-parameters


【解决方案1】:

原始但万无一失的解决方案是将其作为分隔字符串传递,并在您的 proc 中使用 SPLIT 函数将字符串转换为您可以加入的表。

Google SQL SPLIT FUNCTION 获取免费的剪切粘贴代码。

【讨论】:

    【解决方案2】:

    您可以使用 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);
    

    【讨论】:

    • 这不是我想要的。我不是想将数组存储在数据库中,而是想将它作为参数读入存储过程或用户定义的函数中,并能够将它加入到 sql server 中的其他表中,这样我就可以将它用作一个内联选择查询,如果这有意义的话。
    猜你喜欢
    • 2015-09-21
    • 2014-08-29
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 2013-07-06
    • 1970-01-01
    相关资源
    最近更新 更多