将数据数组发送到PHP中的SQL Server存储过程

问题描述

我在sql Server数据库中有下面两个表:

发票表

ID    | INVOICE_NO |
--------------------
1     | 1000000001 |
2     | 1000000002 |
3     | 1000000003 |

invoice_details表

ID    | INVOICE_ID | DESCRIPTION | AMOUNT |
-------------------------------------------
1     | 1          | Electricity | 3500.00|
2     | 1          | Telephone   |  750.00|
3     | 2          | Car Service | 6500.00|
4     | 2          | Other       | 1500.00|

我想使用PHP脚本将上述详细信息导出到sql Server存储过程。发送时,我想从invoices表中选择第一行,并从invoice_details表中选择相关的两行(类似)。因此invoice_details必须位于数组之内。

我的问题是

  1. 如何使sql Server存储过程完成此任务?
  2. 如何发送这些详细信息(我可以使用数组将发票详细信息与发票数据一起发送吗?)

请指导是否有人对此有想法。

解决方法

根据@AlwaysLearning给出的想法,我能够使用XML解决我的问题。

CREATE Procedure [dbo].[insert_xml_data]
(
    @details AS XML = '
    <details>
        <invoice_details>
            <line_id>3</line_id>
            <account_code>5000</account_code>
            <description>Other purchases</description>
            <amount>15250.00</amount>
        </invoice_details>
    </details>
    ';
)
As

BEGIN
    
    INSERT INTO xml_data (account_code,description,amount)
        SELECT  
    t1.c.value('account_code[1]','varchar(100)') As account_code,t1.c.value('description[1]','varchar(50)') as description,t1.c.value('amount[1]','varchar(50)') as amount,FROM @details.nodes('/details/invoice_details') t1(c)
END

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...