我将尝试为我的模块创建一个小的安装脚本。
当我呼叫$_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
表不存在时才激活INSERT,但已安装了该表并向cms_guestbook
添加了新行。我搜索了答案并找到了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
,但这似乎也没有用。任何人的建议或解决方案?
最佳答案
您可以执行以下操作:
if(!$this->sql->query("SHOW TABLES LIKE 'cms_guestbook'")){
$this->sql->query("
INSERT
INTO cms_modules (title)
VALUES ('Guestbook')
");
}
您查询以查看是否找到了特定的表,并且是否返回false(请检查以确保它返回布尔值),然后运行其他查询。
关于mysql - 如果表不存在,则插入MySQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22320254/