Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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 SQL如果不存在-当它确实存在时如何返回/解释_Php_Sql Server 2005 - Fatal编程技术网

Php SQL如果不存在-当它确实存在时如何返回/解释

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 NOT EXISTS语句。如果它不存在,则会出现INSERT语句。如果存在,我需要了解什么是/可以返回,以便我可以用PHP解释它

因此:

我认为负片不会返回结果,因此可以使用标准

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