php - 如何使用存储过程 SQL SERVER 2008 R2(mssql) 插入 PHP 数组值

标签 php sql-server arrays stored-procedures sql-server-2008-r2

我有这个数组

$REV = Array
(
    0 => 240,
    1 => 241,
    2 => 242,
    3 => 243,
    4 => 249
);

我现在使用下面的代码插入,将每个数组的元素存储在一行中,包含 $id、$userID、类型和日期

if (!empty($REV)) {
    foreach ($REV as $val_rev) {
        $values_rev[] = "('" . $ID . "','REV','" . $val_rev . "','" . $IDUSER . "',GETDATE())";
    }
    $values_rev_insert = implode(',', $values_rev);

    $query_rev = "insert into dbo.CCLine (ID,CCType,CSID,IdUSer,DateCreated)values" . $values_rev_insert;
    mssql_query($query_rev);
}

但我想要的是可以使用这个存储过程,但我不知道如何使用 sp 一次性插入:

$stmt = mssql_init('sp_insertRev');
mssql_bind($stmt, '@ID', $ID, SQLINT4);
mssql_bind($stmt, '@CCType', 'REV', SQLVARCHAR);

数组在这里不起作用

mssql_bind($stmt, '@CSID', $val_rev, SQLINT4);//An example 

mssql_bind($stmt, '@IdUSer', $IDUSER, SQLCHAR);
$result = mssql_execute($stmt);

我如何将这个 SP 与阵列一起使用

CREATE PROCEDURE [dbo].[sp_HCCInsert]
            @ID int
           ,@CCType varchar(10)
           ,@CSID varchar(10)
           ,@IdUSer char(15)

AS
BEGIN

    SET NOCOUNT ON;

    DECLARE @CCID as INT

    INSERT INTO [dbo].[CCLine]
           ([ID]
           ,[CCType]
           ,[CSID]
           ,[IdUSer]
           ,[DateCreated])
     VALUES
           (@ID
           ,@CCType
           ,@CSID
           ,@IdUSer
           ,GETDATE())


      SET @CCID = @@IDENTITY

      Select @CCID as CCID


END

最佳答案

我在 this post 中找到了解决您问题的方法

这一切都是关于将数组作为 XML 字符串传递给过程,并在过程中用 OPENXML 函数在 INSERT SELECT 语句中使用。

CREATE PROCEDURE [dbo].[sp_HCCInsert]
(
   @XMLDoc XML
)

然后在 MSSQL 中使用函数 OPENXML。您应该阅读本主题。 所以伪代码看起来像

插入 ... 选择 OPENXML(@XML...)

阅读并满足您的需求后,只需将 XML 传递给过程即可。

关于 OPENXML 的一些有用链接

此外,我建议使用 PDO,因为它具有更好的抽象层。希望对您有所帮助。

关于php - 如何使用存储过程 SQL SERVER 2008 R2(mssql) 插入 PHP 数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17330557/

相关文章:

javascript - ckeditor - 将文本区域插入数据库

sql - sql server中的str_to_date函数?

php - 使用 PHP 将数组插入 MySQL

javascript - 具有多项选择限制的下拉菜单

arrays - 在数组中查找唯一整数

php - 如何从分组表中选择需要排序的多个值

php - 如何设置包含目录中的所有 PHP 脚本?

php - 将数组拆分为多个部分并输出带有值列表的字符串

sql - 查看从存储过程创建的临时表

sql - 使用 SELECT * FROM X WHERE Y is not NULL 替换查询