Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS SQL查询在PHP中失败,但在MS SQL Server Management Studio中未失败_Php_Sql - Fatal编程技术网

MS SQL查询在PHP中失败,但在MS SQL Server Management Studio中未失败

MS SQL查询在PHP中失败,但在MS SQL Server Management Studio中未失败,php,sql,Php,Sql,我用php和odbc驱动程序执行这个查询 $sql="DECLARE @Auftrag int; DECLARE @date_now datetime = getdate(); EXEC @Auftrag=EHS.dbo.SP_ANZEIGE @Tablet=1, @Status=0, @KuNr='K015538'; SELECT 'generatedID'=@Auftrag;"; $res = odbc_exec($db1_link, $sql) or die(odbc_err

我用php和odbc驱动程序执行这个查询

$sql="DECLARE @Auftrag int; 
DECLARE @date_now datetime = getdate(); 
EXEC @Auftrag=EHS.dbo.SP_ANZEIGE 
@Tablet=1, 
@Status=0, 
@KuNr='K015538'; 
SELECT 'generatedID'=@Auftrag;";

$res = odbc_exec($db1_link, $sql) or die(odbc_errormsg()); // returns resource(13)
$firstRow = odbc_fetch_array($res); // dies error
如果执行odbc_fetch_数组,将抛出错误“此结果索引中没有可用的元组”

如果我在ManagementStudio中运行完全相同的查询,一切正常。它显示了计算生成的ID。有什么区别


问候Alex

尝试在查询前添加以下前缀:

set nocount on

这会阻止SQL Server发送行数更新,UNIX客户端有时会将其误认为实际的行集。我也遇到了同样的问题。就我而言,我是这样执行的

$sql = "SELECT * FROM table1";
$resultSet = odbc_exec($sqllink, $sql);

while ($data = odbc_fetch_array($resultSet)) {
    $sql = "SELECT * FROM table2";
    $resultSet2 = odbc_exec($sqllink, $sql);//failed here
    while ($data2 = odbc_fetch_array($resultSet2)) {

           //something here

    }
}
我就这样改变了,而且成功了

$sql = "SELECT * FROM table1";
$resultSet = odbc_exec($sqllink, $sql);

// Create an array and store the results

$queryResult = array();

while ($data = odbc_fetch_array($resultSet)) {

    // push the required content into the array

    $queryResult[$data['id']]['name'] = $data[name];
}

foreach($queryResult as $row) {
    $sql = "SELECT * FROM table2";
    $resultSet2 = odbc_exec($sqllink, $sql);
    while ($data2 = odbc_fetch_array($resultSet2)) {

        // something here

    }
}

向我们展示如何在phpTry中运行此查询,以在查询前加上前缀:
set nocount on
。这会阻止SQL Server发送行数更新,UNIX客户端有时会将其误认为是实际的行集。哇。。。我不相信你真的做到了。我不知道确切的原因,但我真的很高兴:)谢谢