>我使用 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_array则抛出错误"此结果索引中没有可用的元组"。
如果我在管理工作室中运行完全相同的查询,一切正常。它向我显示了计算生成的 ID。有什么区别?
问候亚历克斯
尝试在查询前面加上:
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
}
}