Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用关系标识符将变量插入到单独的表中_Php_Sql Server - Fatal编程技术网

Php 使用关系标识符将变量插入到单独的表中

Php 使用关系标识符将变量插入到单独的表中,php,sql-server,Php,Sql Server,我需要一些方法学方面的帮助 我有3个文本输入,格式为“添加任务”: <form action="page.php" method="POST"> <input type="text" name="task_string" value="" /> <input type="text" name="hours" value="" /> <input type="text" name="minutes" value="" />

我需要一些方法学方面的帮助

我有3个
文本
输入,格式为
“添加任务”

<form action="page.php" method="POST">
    <input type="text" name="task_string" value="" />
    <input type="text" name="hours" value="" />
    <input type="text" name="minutes" value="" />
    <input type="submit" value="Add Task" />
</form>
现在我需要将
分钟数
小时数
值输入
时间表
中,但我需要参考上述
任务。id

//timelines
+----+-------+---------+-----------------------------+
| id | hours | minutes | task_id                     |
+----+-------+---------+-----------------------------+
| 1  | 3     | 29      | // task_id from table above |
+----+-------+---------+-----------------------------+
如何在多用户环境中使用SQL Server和PHP实现这一点?

您可以使用它;下面是一个例子。但对于多用户环境,必须使用
事务块
,以确保两个插入都成功

create procedure doDML(@task_string varchar(100),@hours int, @minutes int)
as
begin
declare @lastID int;
insert into tasks values(@task_string);
set @lastID = @@IDENTITY;

insert into timelines values(@hours, @minutes, @lastID);
end

您应该使用范围\标识而不是@标识@BogdanSahlean,感谢您指出该链接,但在这种情况下,使用@IDENTITY并没有什么害处,因为您是在同一过程中使用它的。你可以试试看,它肯定会起作用。@BogdanSahlean,我听说
scope\u identity()
被破坏了,应该改用
output子句
。@proPhet:scope\u identity在使用时可能会产生错误的结果。但
INSERT的情况并非如此。。。值(…)。
该错误会影响作用域标识()以及。@@IDENTITY(根据Microsoft支持链接)。
create procedure doDML(@task_string varchar(100),@hours int, @minutes int)
as
begin
declare @lastID int;
insert into tasks values(@task_string);
set @lastID = @@IDENTITY;

insert into timelines values(@hours, @minutes, @lastID);
end