1
我正在使用PHP 5.5并连接到MS SQL数据库。连接按预期工作。我试图做一个质量插入(大约2000行)。而不是使用PHP运行2000 INSERT语句,我送一个查询,像这样:PHP和SQLSRV没有插入它应该的所有行
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管理CHINESE工作室,它插入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()函数没有时间限制,我想。有没有人遇到过这样的事情?这让我感到困惑。
这是有效的sql。如果是连接/命令超时或缓冲区大小问题,您将收到一个异常。我会先创建一个测试存储过程并粘贴你的sql。然后将你的内联sql更改为“EXEC TEST_PROC”并查看是否有任何区别:( –