php - 代码未从配置数据库表返回值
问题描述
(如果此问题发布在不当或非最佳场所,我提前道歉。)
我正在尝试将下表中的数据库模式的版本号与 version.php 中的 $oc_db_version 的版本号进行比较。
DROP TABLE IF EXISTS `oc_config`;
CREATE TABLE `oc_config` (
`key` varchar(80) NOT NULL,
`value` varchar(80) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT;
INSERT INTO `oc_config` (`key`, `value`) VALUES
('api_key', 'pzPgYOO7vz1WxgfD5913BMp5RYX8wpZPdp2KN5pdx78MRscT2X65zrmgfBQXCpQG'),
('oc_db_version', '999');
我似乎无法让它工作。我要么得到“PDOStatement 无法转换为 int”的效果,要么得到 bool(true)。下面是我当前使用的代码。
try{
$pdo = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME, DB_USER, DB_PASSWORD);
} catch(PDOException $ex)
{
$_SESSION['error'] = "Could not connect -> ".$ex->getMessage();
$_SESSION['error_blob'] = $ex;
header('Location: '.BASE_URL.'/oc-content/plugins/error/index.php');
die();
}
$stmt = $pdo->query("SELECT value FROM ".DB_PREFIX."config WHERE `key` = 'oc_db_version'");
$result = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$result['value'])
{
header('Location: '.BASE_URL.'/oc-content/plugins/error/index.php');
die();
}
if ( $result['value'] != $oc_db_version || $result['value'] > $oc_db_version )
{
die("Database version mimatch. Please upgrade.");
}
else{
// Do Nothing
};
$pdo = null;
我意识到上面的代码可以用来重构,有些人可能会畏缩阅读它,为此我深表歉意。我只是想让它工作。
解决方案
推荐阅读
- domain-driven-design - 在对事件源域模型进行建模时可以有“技术”事件吗?
- java - 更新共享首选项值得到致命信号 6 (SIGABART) 错误和应用程序崩溃
- mysql - 名字和姓氏的首字母仅在数据库查询中
- jenkins - Jenkins 和 Slack(Jenkins Slack 应用程序不能在脚本中使用)
- php - 在 PHPUnit 中使用 SQLite 会导致磁盘 I/O 错误
- python - 如何将负 (<0) RGB 颜色值放入 PIL 中的图像?
- mysql - 根据某些条件管理我的查询结果
- c# - AWS 认知托管 UI 在 asp.net 核心 Web 应用程序中显示登录用户名
- r - 左截断 Gamma 拟合
- java - 在我的回文函数中输入一个空字符串