2011-09-15 14 views
0

は、次のコードブロックを考える:PDO - トランザクションから変数値を取得していますか?

$q = " 
BEGIN; 
DECLARE User_ID int 
INSERT INTO user (field1,field2) values (value1,value2); 
set User_ID = select LAST_INSERT_ID(); 
INSERT INTO table2 (field1,field2) values (value1,LAST_INSERT_ID()); 
select User_ID 
COMMIT;"; 

$sth = PDO::prepare($q); 
$sth->execute(); 

一体私は値「USER_ID」を盗ん行うには? fetchとfetchAllは空の配列を返すだけで、プロセスにはエラーがスローされません。

EDIT 1残念ですが、結果を返す前に2番目のINSERT文があります。

答えて

1

$ Q = " BEGIN; DECLARE USER_ID INT ユーザ(FIELD1、FIELD2)値(値1、値2)。INSERT INTO; USER_ID セットは= LAST_INSERT_ID()を選択し、表2 INTO INSERT(FIELD1、FIELD2)値(value1、LAST_INSERT_ID() - 1); select User_ID COMMIT; ";

$ sth = PDO :: prepare($ q); $ sth-> execute();

+0

あなたのエンジンがそれをサポートしています –

+0

申し訳ありませんが、より明確になっているはずです... user_idを返す前に2番目のINSERT句があるので、PDOのバージョンで変数値を取得するのではなく変数値を設定します。 –

+0

OKトランザクションを使用する必要があります –

関連する問題