我一直在墙上砸了好几个小时,我怀疑如果你知道在哪里看,答案很简单。
我在MS SQL 2005中有一个编译后的存储过程,它可以很好地工作。我测试了它并且没有任何错误。
但是当我从这里显示的PHP include文件调用相同的过程时,存储过程似乎开始运行(我的mssql跟踪显示正确的调用)然后停止一半。有时我会更新15条记录中的10条。其他时候我得到14分中的5分。
如果我复制从跟踪窗口运行的命令并直接在MS SQL管理工作室中运行它,它可以正常工作。这导致我认为它是某种超时或我是否在程序运行之前关闭连接所以MS SQL 2005认为它应该被终止?
<?php
session_start();
require ('../includes/config.inc.php');
require('../includes/mssql.php');
function include_booking($box, $offeredtolocumid, $surgery, $rate) {
$dbc2 = mssql_connect(DB_HOST, DB_USER, DB_PASSWORD);
$q2 = "exec WEB_Surgery_Box_OfferBoxtoLocum '".$box."', '".$offeredtolocumid."', '".$surgery."'";
$myresult = mssql_query($q2 ,$dbc2);
}
/* set out document type to text/javascript instead of text/html */
header("Content-type: text/javascript");
$offeredtolocumid = $_GET["locumid"];
//$rate = $_GET["rate"];
$rate = 15.99;
$surgery = $_SESSION['surgeryid'];
$box = $_SESSION['currentbox'];
include_booking($box, $offeredtolocumid, $surgery, $rate);
?>
我是PHP / MS SQL新手,所以我理解上面的代码无论如何都不是完美的。
我有许多其他程序调用可以正常工作。只是这个没有。 MS SQL服务器平均需要0.1秒才能完成此过程。 我希望有人有答案。
由于 尼尔
答案 0 :(得分:0)
经过今天的大量测试并删除了SET NO COUNT选项后再次崩溃程序我相信这就是问题所在。
所以澄清一下。从PHP调用MS SQL存储过程时,我应该使用SET NO COUNT来防止任何不希望的返回。
感谢。