gpt4 book ai didi

php - 检查数据库和/或表是否存在

转载 作者:可可西里 更新时间:2023-11-01 12:50:12 26 4
gpt4 key购买 nike

我正在尝试使用 Zend Framework 编写一个简单的安装脚本。它应该运行一些测试:

  • 测试 application.ini 中指定的数据库是否存在(或者是否可以访问它)。
  • 如果存在,则测试数据库中是否存在名为user 的表
  • 如果有,检查是否有站点管理员用户

如果任何步骤失败, Controller 将负责将用户重定向到安装过程的正确步骤。

我使用以下代码创建了一个模型:

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;
}

但是,我高估了我用过的功能。 getDefaultAdapter() 可能会返回 null,但如果没有要连接的数据库,则会抛出异常。 describeTable() 也会发生同样的情况,它会抛出异常而不是返回空数组。

因此我的问题是:如何在不出现异常或错误的情况下检查数据库/表是否存在?

最佳答案

粗略的例子:

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;
}

关于php - 检查数据库和/或表是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5078357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com