由于某些原因,即使我尝试测试、try-catch块并断开连接,此代码也总是返回"Connected to Database"。当我更改数据库的名称以测试异常时,它只会创建一个新的数据库。有什么想法吗?
<?php
try{
$db = new PDO ("sqlite:".__DIR__."/database.db");
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
} catch (Exception $e){
echo 'Caught exception: ', $e->getMessage();
exit;
}
echo "Connected to Database";
?>
我相信这是pdo_sqlite的预期行为:如果你提供了一个不存在的数据库的路径,并且PHP能够写入该路径目录中的文件,它只需在你提供的文件名下创建数据库。
如果您想测试文件不可写的情况,您可以更改文件权限,使运行PHP的用户没有写访问权限。
因为echo "Connected to Database";
不在try
括号内,所以它将始终与之呼应。
试试这个。
<?php
try{
$db = new PDO ("sqlite:".__DIR__."/database.db");
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
echo "Connected to Database";
} catch (Exception $e){
echo 'Caught exception: ', $e->getMessage();
exit;
}
?>