Php SQL如果不存在-当它确实存在时如何返回/解释
我有一个IF NOT EXISTS语句。如果它不存在,则会出现INSERT语句。如果存在,我需要了解什么是/可以返回,以便我可以用PHP解释它 因此: 我认为负片不会返回结果,因此可以使用标准Php SQL如果不存在-当它确实存在时如何返回/解释,php,sql-server-2005,Php,Sql Server 2005,我有一个IF NOT EXISTS语句。如果它不存在,则会出现INSERT语句。如果存在,我需要了解什么是/可以返回,以便我可以用PHP解释它 因此: 我认为负片不会返回结果,因此可以使用标准 if ($result){echo "record added";} else {echo "duplicate - no record added";} 但事实并非如此,我也不确定如何实现我所需要的——有什么建议吗 感谢您的关注。您可以尝试以下方式: SET NOCOUNT ON IF NOT EXI
if ($result){echo "record added";}
else {echo "duplicate - no record added";}
但事实并非如此,我也不确定如何实现我所需要的——有什么建议吗
感谢您的关注。您可以尝试以下方式:
SET NOCOUNT ON
IF NOT EXISTS (SELECT id FROM users WHERE lname='SMITH')
BEGIN
INSERT INTO users (lname) VALUES('SMITH')
SELECT 1
END
ELSE
SELECT 0
并检查返回的标量=0或1?在这两种情况下,
$result
将返回成功运行命令的响应,仅此而已INSERT
不会生成任何行,也不会生成没有匹配条件的IF
语句
如果要检索插入的ID,可以使用
SELECT SCOPE\u IDENTITY()
,然后可以检查$result
是否返回了一行。如何定义$result
?SQL仍将生成一个“我做了些什么”对象,尽管我不完全确定这在PHP中是什么样子。据我所知,如果没有插入行,您将得到(相当)标准代码100
;但是,我不确定您编写SQL的方式将如何实现这一点。我更愿意将其重新写入一个表单,该表单将始终执行插入,但它并不总是有一行这样做。我最终使用了您建议的一个变体:…选择1作为响应端,否则选择NULL作为响应
,这样做有效…当我有更多时间时,我必须对此进行更多的研究。谢谢你的回复,nonnb!我首先尝试了SELECT SCOPE\u IDENTITY
,但不幸的是,不管结果如何,它都会返回一个结果——这只是最后一个结果,所以结果总是肯定的。谢谢你的意见,PinnyM!是的,但是想法是执行选择
作为主体的一部分,如果不存在
主体,类似于@nonnb的解决方案你是对的,PinnyM…我可以在结束
之前使用选择范围_IDENTITY()
,完全不使用其他
。更好的解决方案。干杯还需要重写一点php:而不是if($result)
它需要if(mssql\u fetch\u array($result))
(这两种解决方案都需要)
SET NOCOUNT ON
IF NOT EXISTS (SELECT id FROM users WHERE lname='SMITH')
BEGIN
INSERT INTO users (lname) VALUES('SMITH')
SELECT 1
END
ELSE
SELECT 0