1

我已经把头撞在墙上几个小时了,如果你知道在哪里看,我怀疑答案很简单。

我在 MS SQL 2005 中有一个编译的存储过程,它运行良好。我已经测试过了,没有任何错误。

但是,当我从此处显示的 PHP 包含文件中调用相同的过程时,存储过程似乎开始运行(我的 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 秒。我希望有人有答案。

谢谢尼尔

4

1 回答 1

0

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

所以要澄清。从 PHP 调用 MS SQL 存储过程时,我应该使用 SET NO COUNT 来防止返回任何不受欢迎的东西。

谢谢。

于 2013-03-26T20:48:37.583 回答