我会尝试为我的模块创建一个小安装脚本。
当我调用$_GET["install"]
脚本正在运行时。我看起来像这样:
public function install()
{
$this->sql->query("
INSERT
INTO cms_modules (title)
VALUES ('Guestbook')
");
$this->sql->query("
CREATE TABLE IF NOT EXISTS `cms_guestbook` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
");
}
效果很好。该表已安装,并且新行已添加到cms_modules
,但我希望仅当cms_guestbook
表不存在时才会激活INSERT。
我搜索了一个答案并找到了this主题。我会尝试使用WHERE NOT EXISTS
执行以下操作:
$this->sql->query("
INSERT
INTO cms_modules (title)
VALUES ('Guestbook')
WHERE NOT EXISTS (
SELECT 1 FROM cms_guestbook
)
");
但这对我来说不起作用。表已安装,但未插入行。我也尝试使用SHOW TABLES LIKE
,但这似乎也没有用。
任何建议或解决方案?
答案 0 :(得分:1)
你可以这样做:
if(!$this->sql->query("SHOW TABLES LIKE 'cms_guestbook'")){
$this->sql->query("
INSERT
INTO cms_modules (title)
VALUES ('Guestbook')
");
}
你查询它是否找到一个特定的表,如果它返回false(检查以确保它返回一个布尔值)你运行另一个查询。