2012-10-04 55 views
0

我在PHP中使用sqlite_last_insert_rowid時遇到問題。 CODE:SQLite last_insert_rowid使用PHP

$database = new SQLiteDatabase('example.db'); 
$sql_1 = "INSERT INTO ex1(test1, test2) VALUES ('$test1','$test2')"; 
$database->queryExec($sql_1); 

$ex1_ID = sqlite_last_insert_rowid($database); 

$sql_2 = "INSERT INTO ex2 (ex1_ID, fname, lname) values ('$ex1_ID','$fname','$lname');"; 
$database->queryExec($sql); 

我想從EX1表ID存儲表EX2中ex1_ID

CREATE TABLE ex1 ( 
ID INTEGER PRIMARY KEY, 
test1 LONGTEXT, 
test2 LONGTEXT 
); 

CREATE TABLE ex2 ( 
ID INTEGER PRIMARY KEY, 
ex1_ID INTEGER, 
fname LONGTEXT, 
lname LONGTEXT, 
FOREIGN KEY (ex1_ID) REFERENCES ex1 (ID) 
); 

完整代碼:

$database = new SQLiteDatabase('example.db'); 
    for ($i = 0; $i < 10; $i++) { 
     $test1 = ""; 
     $test2 = ""; 
     $lenght = rand(300, 400); 
     for ($x = 0; $x < $lenght; $x++) { 
      $test1 .= rand(0, 9); 
      $test2 .= rand(0, 9); 
     } 
     $sql_1 = "INSERT INTO ex1 (test1,test2) VALUES ('$test1','$test2')"; 
     $database->queryExec($sql_1); 
     $ex1_ID = sqlite_last_insert_rowid($database); 

     for ($j = 0; $j < 3; $j++) { 
      for ($x = 0; $x < $lenght; $x++) { 
       $test1 .= rand(0, 9); 
       $test2 .= rand(0, 9); 
      } 
      $sql_2 = "INSERT INTO ex2 (ex1_ID, fname, lname) values ('$ex1_ID','$test1','$test2');"; 
      $database->queryExec($sql_2); 
     } 
    } 

我不能從EX1表拿到最後一個ID 。 請幫忙!

+1

last_insert_id僅適用於當前連接。如果您未在此會話中進行任何插入,則不會有可用的last_insert_id。 –

+0

對不起,我輸入代碼的錯誤,我改變了它。我嘗試上面的代碼,沒有什麼我不能使用ID從ex1表... – djpetrovic

回答

2

已更新現在我們有更多信息。

由於您使用的對象模型的方式來查詢您的數據庫,你有沒有嘗試

$lastid = $database->lastInsertRowid(); 

+0

是的我嘗試了它,但ex1_ID是空的沒有錯誤。 – djpetrovic

+0

如果你做一個回聲($ ex1_ID),你會得到什麼? – mbarthelemy

+0

沒什麼其空白頁面。我嘗試echo和尋找錯誤,但沒有什麼,在第一個表ex1我有一個存儲ID = 1,2,3等等。 – djpetrovic