从PHP 5中途调用时,MS SQL存储过程失败

时间:2013-03-26 00:54:01

标签: php sql-server stored-procedures

我一直在墙上砸了好几个小时,我怀疑如果你知道在哪里看,答案很简单。

我在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秒才能完成此过程。 我希望有人有答案。

由于 尼尔

1 个答案:

答案 0 :(得分:0)

经过今天的大量测试并删除了SET NO COUNT选项后再次崩溃程序我相信这就是问题所在。

所以澄清一下。从PHP调用MS SQL存储过程时,我应该使用SET NO COUNT来防止任何不希望的返回。

感谢。