Php 奇怪的SELECT/INSERT语句在第一次和第三次工作,但在第二次不工作?

Php 奇怪的SELECT/INSERT语句在第一次和第三次工作,但在第二次不工作?,php,sql-server-2005,Php,Sql Server 2005,我在PHP中使用了一个语句,如果存在,它将提取一个数字;如果不存在,它将创建一行,然后从创建的行中提取数字 下面的代码可以工作,但正如标题所说……不是第二次。首先让我澄清一下,如果行存在,它每次都有效。但当创建一行并返回数字时,下一次通过(再次使用新变量)将失败,但下一次(再次使用相同的新变量)将正常工作。在php和sql环境中都是如此 SELECT id FROM table1 WHERE authID = 'DOEJON' AND periodID = 55 IF @@ROWCOUNT =

我在PHP中使用了一个语句,如果存在,它将提取一个数字;如果不存在,它将创建一行,然后从创建的行中提取数字

下面的代码可以工作,但正如标题所说……不是第二次。首先让我澄清一下,如果行存在,它每次都有效。但当创建一行并返回数字时,下一次通过(再次使用新变量)将失败,但下一次(再次使用相同的新变量)将正常工作。在php和sql环境中都是如此

SELECT id FROM table1 WHERE authID = 'DOEJON' AND periodID = 55 
IF @@ROWCOUNT = 0 INSERT INTO table1 (authID, periodID) VALUES ('DOEJON', 55);
SELECT id FROM table1 WHERE timeID = SCOPE_IDENTITY()
似乎有某种与语句相关的刷新-如何每次都获得所需的结果?想法

感谢您的关注。

请尝试下面的内容

Declare @ID Int

SELECT @ID = id FROM table1 WHERE authID = 'DOEJON' AND periodID = 55  

If (id is null)
Begin
    INSERT INTO table1 (authID, periodID) VALUES ('DOEJON', 55); 
    Set @ID = SCOPE_IDENTITY() 
End
Select @ID As ID

authID、periodID
是否要唯一?如果是,它是否有唯一的约束?此外,您还应该查看
OUTPUT
子句来检索插入的行。这很有效!谢谢仅供参考:我的代码中至少有一个错误(最后一个是s/b'id=SCOPE_IDENTITY),我认为IF语句应该是“IF(@id为NULL)”,或者至少在我改变它之前它不起作用……太好了。很高兴帮助您:)