PHP 和 SQLSRV 并没有插入它应该插入的所有行


PHP and SQLSRV isn't inserting all the rows it should

我正在使用PHP 5.5并连接到MS SQL数据库。 连接按预期工作。 我正在尝试进行批量插入(大约 2000 行)。 我没有使用 PHP 来运行 2000 个 INSERT 语句,而是发送如下查询:

DECLARE @count INT
SET @count = 0
WHILE(@count < 2000)
BEGIN
INSERT INTO Table (Field1, Field2)
VALUES ('data1', 'data2')
SET @count = (@count + 1)
END

当我将此查询直接插入 SQL Server Management Studio 时,它会按预期插入 2000 行。 当我通过 PHP 运行查询时,如下所示:

$connectInfo = array ("UID"=>'user',"PWD"=>'@pass',"Database"=>"database", "ReturnDatesAsStrings"=>true);
$link = sqlsrv_connect("dataserver",$connectInfo);
$query = "DECLARE @count INT 
SET @count = 0  
WHILE(@count < 2000) 
BEGIN 
INSERT INTO License (Field1, Field2) 
VALUES('data1','data2') 
SET @count = (@count + 1) 
END";
if(!$foo = sqlsrv_query($link,$query)) {
  die(print_r(sqlsrv_errors(), true));
}else{
  die("hooray beer time!");
}

这只在表中插入 524 行,而不是预期的 2000 行(有时它是 309 行,X 行,它不稳定)。 它不会出错,每次脚本运行后我都会得到"万岁啤酒时间! 默认情况下,sqlsrv_query() 函数没有时间限制,我想。 以前有人遇到过这样的事情吗? 这让我感到困惑。

啊,似乎每次插入 While 循环后,SQL 都会返回一小行文本,上面写着 (1) 行受到影响(或该曲调的内容)。 通过以下方式关闭此功能:

SET NOCOUNT ON

已解决此问题。 谢谢大家!