php - 将数据数组发送到 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
必须在数组或其他东西中。
我的问题是;
- 如何使 SQL Server 存储过程完成这项工作?
- 如何发送这些详细信息(我可以使用数组将发票详细信息与发票数据一起发送)?
如果有人对此有任何想法,请指导。
解决方案
根据@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
推荐阅读
- javascript - 如何在扩展中嵌入页面?
- python - 如何在跳过前两行时计算列的累积和?
- woocommerce - WooCommerce 条纹付款表格未在结帐页面上翻译
- hana - 在 SAP B1 Hana Transactions Notifications 中,是否可以将服务层从其操作中排除?
- algorithm - 使用分治法返回元素的索引
- bash - (Git)Bash 可编程完成,带有短“-...”和长“--...”选项
- php - 如何在数组中设置默认值我想设置我的主题默认值
- python - Python-Docx:识别斜体段落
- c# - Http 客户端返回看似编码的数据
- r - 如何在 r markdown 中将表格移动到文本的左侧?