我想從我的PHP腳本啓用sqlite數據庫的外鍵約束。從php腳本啓用sqlite數據庫的外鍵約束
我想:
shell_exec('sqlite ex.db');
shell_exec('PRAGMA foreign_keys = ON');
echo $isEnabled = shell_exec('PRAGMA foreign_keys');
但我沒有得到$isEnabled
爲1
。事實上,我沒有得到任何輸出。
謝謝。
我想從我的PHP腳本啓用sqlite數據庫的外鍵約束。從php腳本啓用sqlite數據庫的外鍵約束
我想:
shell_exec('sqlite ex.db');
shell_exec('PRAGMA foreign_keys = ON');
echo $isEnabled = shell_exec('PRAGMA foreign_keys');
但我沒有得到$isEnabled
爲1
。事實上,我沒有得到任何輸出。
謝謝。
爲什麼不使用內置的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支持,所以我沒有看到讓它變得更加複雜的理由。
從sqlite command line shell tutorial有一個部分在shell腳本中使用sqlite3:
當sqlite3的程序與兩個參數推出,第二 參數傳遞給處理SQLite庫,查詢 結果以列表模式打印在標準輸出上,並退出程序 。
所以,你可以嘗試sqlite3 ex.db 'PRAGMA foreign_keys = ON; PRAGMA foreign_keys'
我一個使用PDO,即我的代碼是: – Roopa
應與PDO_SQLITE工作太,因爲它們是查詢被髮送。即使方法名('exec()'/'queryy()')也是一樣的;)只有query()的返回值有點不同,但更容易:query('PRAGMA foreign_keys ') - > fetchColumn(0);' – KingCrunch
感謝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