我试过这样做:
$result = odbc_exec($connection, 'SELECT id FROM MyTable WHERE id = @@Identity');但它给了我
语法错误:意外的T_VARIABLE
编辑:感谢您的帮助,这里有完整的逻辑:
$result = odbc_exec($connection, 'INSERT data into the table;SELECT SCOPE_IDENTITY() AS id;');
$row = odbc_fetch_array($result); //this line gives the error!
$id = $row['id']; edit2:我错过了";“=_=
无论如何,scope_identity不起作用:
此索引中没有可用的元组。
关于取查呼叫
发布于 2012-09-26 13:33:18
插入一行后,可以使用scope_identity()查找最后插入的id。没有必要在原始表格中查找:
SELECT SCOPE_IDENTIY()如果该行被插入到另一个连接上,则可以查询id的最大值。
SELECT max(id) FROM MyTable发布于 2012-09-26 13:36:39
你为什么不直接说:
$result = obdc_exec('INSERT dbo.MyTable(...) VALUES(...); SELECT id = SCOPE_IDENTITY();');或者更好的方法是,将逻辑放入存储过程中,并停止在应用程序代码中隐藏特定的SQL。
编辑是因为PHP很奇怪,可能会将插入作为结果集来处理,因此您可能需要使用它(请原谅,但我不是PHP专家):
odbc_next_result($result);您还可以通过以下方式来抑制第一个结果:
SET NOCOUNT ON; INSERT ...; SELECT id = SCOPE_IDENTITY();再说一遍,我不知道,我不做PHP。我仍然认为你应该在存储过程中这样做。
https://stackoverflow.com/questions/12602945
复制相似问题