从php脚本启用sqlite DB的外键约束

时间:2011-07-14 09:27:00

标签: php sqlite

我正在尝试从我的php脚本启用sqlite数据库的外键约束。

我试过了:

shell_exec('sqlite ex.db');

shell_exec('PRAGMA foreign_keys = ON');

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

但我没有$isEnabled作为1。事实上,我没有得到任何输出。

感谢。

2 个答案:

答案 0 :(得分: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支持,我认为没有理由让它更复杂,需要它。

答案 1 :(得分:0)

sqlite command line shell tutorial开始,在shell脚本中有一节使用sqlite3:

  

当使用两个参数启动sqlite3程序时,第二个   参数传递给SQLite库进行处理,查询   结果以列表模式和程序打印在标准输出上   退出。

所以你可以尝试sqlite3 ex.db 'PRAGMA foreign_keys = ON; PRAGMA foreign_keys'