2011-07-14 84 views
0

我想從我的PHP腳本啓用sqlite數據庫的外鍵約束。從php腳本啓用sqlite數據庫的外鍵約束

我想:

shell_exec('sqlite ex.db'); 

shell_exec('PRAGMA foreign_keys = ON'); 

echo $isEnabled = shell_exec('PRAGMA foreign_keys'); 

但我沒有得到$isEnabled1。事實上,我沒有得到任何輸出。

謝謝。

回答

5

爲什麼不使用內置的SQLite驅動程序?

$con = new SQLite3('ex.db'); 
$con->exec('PRAGMA foreign_keys = ON;'); 
var_dump($con->query('PRAGMA foreign_keys;')->fetchArray()); 

根據你的問題:shell_exec()(顧名思義)執行shell命令。這意味着你試圖執行三個(!)shell命令,但是你想執行一個命令,然後你想在之前開始的交互式sqlite3進程中執行另外兩個命令。這是不可能的。也許你可以玩stdin,但是因爲PHP帶有SQLite3支持,所以我沒有看到讓它變得更加複雜的理由。

+0

我一個使用PDO,即我的代碼是: – Roopa

+0

應與PDO_SQLITE工作太,因爲它們是查詢被髮送。即使方法名('exec()'/'queryy()')也是一樣的;)只有query()的返回值有點不同,但更容易:query('PRAGMA foreign_keys ') - > fetchColumn(0);' – KingCrunch

+0

感謝KingCrunch,只是爲我的另一個新的應用程序,我使用codeigniter與sqlite3 ....其中所有數據庫連接設置在database.php:$ active_group =「default」; $ active_record = TRUE; $ db ['default'] ['hostname'] = $ appip; $ db ['default'] ['username'] =「」; $ db ['default'] ['password'] =「」; $ db ['default'] ['database'] =「sqlite:ex.db」; $ db ['default'] ['dbdriver'] =「pdo」; $ db ['default'] ['dbprefix'] =「」; 等等......我還能如何啓用外鍵?再次感謝...我在CI論壇上發佈了同樣的問題,但也沒有答覆.. :-( – Roopa

0

sqlite command line shell tutorial有一個部分在shell腳本中使用sqlite3:

當sqlite3的程序與兩個參數推出,第二 參數傳遞給處理SQLite庫,查詢 結果以列表模式打印在標準輸出上,並退出程序 。

所以,你可以嘗試sqlite3 ex.db 'PRAGMA foreign_keys = ON; PRAGMA foreign_keys'