0
我使用PDO连接到sqlite3,但由于某些原因,我无法使外键正常工作。根据文档,这个“PRAGMA short_column_names = 1”应该启用。我这样做:PDO上的sqlite3外键
$con = new PDO('sqlite:z:/testing.db');
$res = $con->exec('PRAGMA foreign_keys=ON');
var_dump($res);die();
这返回我0.我试图用外键创建实际表,它没有工作。 到sqlite3的类直接请求虽然工作:
$con = new SQLite3('z:/testing.db');
$con->exec('PRAGMA foreign_keys = ON;');
var_dump($con->query('PRAGMA foreign_keys;')->fetchArray());
这reutrns阵列(2){[0] => INT(1)[ “foreign_keys”] => INT(1)}
根据SQLite3 :: version(),我有sqlite版本3.7.7.1。我的PHP版本是5.3.18,在Windows上运行。
请帮助我使用PDO运行它。谢谢!
谢谢!你是对的,我用PRAGMA foreign_keys = ON。只是在问题上写错了。您的示例工作正常,我会深入挖掘,可能还有另一个问题与我的应用程序。 $ con> exec('PRAGMA foreign_keys = ON')即使在成功时也会始终返回0,这是我的困惑。 –
@PavelDubinin PDO :: exec()返回0的事实是[因为它会返回受影响的行数](http://php.net/manual/en/pdo.exec.php#refsect1 -pdo.exec-returnvalues)。而'PRAGMA foreign_keys = ON'不会影响任何行。如果语句产生错误,它将返回'false'。 –
对,任何想法如何获得foreign_keys的实际价值? –