加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:29:20 所属栏目:MsSql教程 来源:网络整理
导读:我有这个阵列 $REV = Array( 0 = 240,1 = 241,2 = 242,3 = 243,4 = 249); 我现在使用此代码插入,将每个数组的元素存储在$id,$userID,Type和Date的行中 if (!empty($REV)) { foreach ($REV as $val_rev) { $values_rev[] = "('" . $ID . "','REV','" . $val_re
我有这个阵列
$REV = Array
(
    0 => 240,1 => 241,2 => 242,3 => 243,4 => 249
);

我现在使用此代码插入,将每个数组的元素存储在$id,$userID,Type和Date的行中

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',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.你应该阅读这个主题.
所以伪代码看起来像

INSERT … SELECT OPENXML(@XML …)

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

一些关于OPENXML的有用链接

> http://msdn.microsoft.com/pl-pl/library/ms175160.aspx
> Using OPENXML in SQL Server 2008 stored proc – INSERT order differs from XML document
> http://www.informit.com/articles/article.aspx?p=26499

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读