过去几个小时,这一直在煎我的大脑......
我在表格中插入一行,但我也想报告输入行的ID。
我表中的ID列设置为INT,Identity Specification设置为Yes。增量1和种子1.没什么不寻常的!
插入然后报告插入行的代码如下:
$sql = <<<SQL
INSERT INTO dbo.table (field1, field2)
VALUES (
'{$field1}',
'{$field2}'
);
SELECT @@IDENTITY as id
SQL;
$result = sqlsrv_query($conn, $sql);
if($result === false){
die(print_r(sqlsrv_errors(), true));
}
else{
sqlsrv_next_result($result);
$row = sqlsrv_fetch_object($result);
if($row === FALSE){
die(print_r(sqlsrv_errors()));
}
print "Inserted: ".$row->id;
}
代码在if($row === FALSE)
死亡,错误消息如下;
Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP [1] => -28 [code] => -28 [2] => The active result for the query contains no fields. [message] => The active result for the query contains no fields. ) ) 1
INSERT正在运行!如果我在看到新输入的行后检查数据库。
*但是*
如果我打印正在创建的SQL并在Management Studio中手动运行它,那么insert语句在结果窗格中起作用,我看到一行数据,其列标题为id,其中包含刚刚创建的行的id
有谁知道这里发生了什么?
谢谢,
史蒂夫