出于某种原因,这段代码总是返回 "已连接到数据库",即使我尝试测试,尝试捕获块并中断连接。当我改变数据库的名称来测试异常时,它只是创建了一个新的数据库。有什么办法吗?
<?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;
}
?>