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

时间:2013-10-31 18:24:54

标签: php sql sql-server database

我正在使用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 Mangement 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()函数没有时间限制,我想。以前有没有人碰到这样的事情?让我感到困惑。

1 个答案:

答案 0 :(得分:1)

啊,似乎在While循环中的每次插入之后,SQL返回一小段Text,表示(1)行受影响(或该调整的内容)。通过以下方式关闭此功能:

SET NOCOUNT ON

已经解决了这个问题。谢谢大家!