min*_*gos 7 php sql database installer zend-framework
我正在尝试使用Zend Framework编写一个简单的安装脚本.它应该运行一些测试:
user数据库中是否存在调用的表如果任何步骤失败,控制器将负责将用户重定向到安装过程的正确步骤.
我用以下代码创建了一个模型:
public function verify () {
$db = $this->getDefaultAdapter(); //throws exception
if ($db == null) return self::NO_BATABASE;
$result = $db->describeTable('user'); //throws exception
if (empty($result)) return self::NO_USER;
$result = $db->fetchRow('SELECT * FROM user WHERE id = 1');
if ($result == null) return self::USER_EMPTY;
else return self::OK;
}
Run Code Online (Sandbox Code Playgroud)
但是,我高估了我使用过的功能.getDefaultAdapter()可能会返回null,但如果没有要连接的数据库,则会抛出异常.同样的情况发生describeTable(),抛出异常而不是返回一个空数组.
因此,我的问题是:如何检查数据库/表是否存在而不会出现异常或错误?
Shi*_*ryu 11
粗略的例子:
public function verify () {
try{
$db = $this->getDefaultAdapter(); //throws exception
if ($db == null) return self::NO_BATABASE;
}catch(Exception $e){
return self::NO_BATABASE;
}
try{
$result = $db->describeTable('user'); //throws exception
if (empty($result)) return self::NO_USER;
}catch(Exception $e){
return self::NO_USER;
}
$result = $db->fetchRow('SELECT * FROM user WHERE id = 1');
if ($result == null) return self::USER_EMPTY;
else return self::OK;
}
Run Code Online (Sandbox Code Playgroud)