0

私はこの方法を試しました:

$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は機能しません:

このインデックスで利用できるタプルはありません

fetcharray 呼び出し時

4

2 に答える 2

1

なぜあなたはただ言っていないのですか:

$result = obdc_exec('INSERT dbo.MyTable(...) VALUES(...); SELECT id = SCOPE_IDENTITY();');

または、ロジックをストアドプロシージャに入れて、アプリケーションコードにアドホックSQLを埋め込むのをやめましょう。

PHPは奇妙で、INSERTを結果セットとして扱う可能性があるため、編集してください。これで遊ぶ必要があるかもしれません(ごめんなさい、しかし私はPHPの専門家ではありません):

odbc_next_result($result);

次のように言うことで、最初の結果を抑制することもできます。

SET NOCOUNT ON; INSERT ...; SELECT id = SCOPE_IDENTITY();

繰り返しになりますが、私はPHPをしていません。私はまだあなたがストアドプロシージャでこれを行うべきだと思います。

于 2012-09-26T13:36:39.013 に答える