2011-07-14 20 views
0

私のPHPスクリプトからsqliteデータベースの外部キー制約を有効にしようとしています。PHPスクリプトからsqlite DBの外部キー制約を有効にする

私が試した:

shell_exec('sqlite ex.db'); 

shell_exec('PRAGMA foreign_keys = ON'); 

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

をしかし、私は1として$isEnabledを取得しておりません。実際に私は出力として何も得ていない。

ありがとうございました。

答えて

5

なぜ組み込みSQLiteドライバを使用しないのですか?

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

あなたの問題をよると:shell_exec()は(名前が示唆するように)シェルコマンドを実行します。つまり、3つの(!)シェルコマンドを実行しようとしますが、1つを実行してから、前に開始した対話的なsqlite3プロセス内で2つのコマンドを実行したいとします。これはこのようには不可能です。たぶんstdinで遊ぶことができますが、PHPにはSQLite3のサポートが付属しているので、もっと複雑にする必要はありません。 sqlite command line shell tutorialから

+0

を試みることができる私のコードは、すなわち:彼らがそうであるようにクエリが送信されるため – Roopa

+0

は、あまりにもPDO_SQLITEで動作するはずです。メソッド名( 'exec()'/'queryy()')も同じです; 'query()'の戻り値だけが少し違っていますが、さらに簡単になります: 'query( 'PRAGMA foreign_keys ') - > fetchColumn(0); ' – KingCrunch

+0

おかげでKingCrunch、ちょうど私がsqlite3でcodeigniterを使用している私の別の新しいアプリケーション用....ここで、すべてのdb接続はdatabase.phpに設定されています:$ active_group =" default "; $ active_record = TRUE; $ db ['default'] ['ホスト名'] = $ appip; $ db ['default'] ['username'] = ""; $ db ['default'] ['password'] = ""; $ db ['default'] ['database'] = "sqlite:ex.db"; $ db ['default'] ['dbdriver'] = "pdo"; $ db ['default'] ['dbprefix'] = ""; など...どうすれば外部キーを有効にすることができますか?もう一度おねがいします...私はCIフォーラムにも同じ質問を投稿しましたが、まだ返信はありません。:-( – Roopa

0

シェルスクリプトでsqlite3のを使用したセクションがあります:

sqlite3のプログラムは二つの引数を起動すると、二 引数を処理するためのSQLiteライブラリに渡され、クエリ 結果はlistモードで標準出力に出力され、プログラム が終了します。

だから、私が使用してPDO sqlite3 ex.db 'PRAGMA foreign_keys = ON; PRAGMA foreign_keys'