【问题标题】:MySQL insert if table not exists如果表不存在,则 MySQL 插入
【发布时间】:2014-04-14 17:48:23
【问题描述】:

我将尝试为我的模块创建一个小安装脚本。 当我调用$_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,但这似乎也不起作用。

任何建议或解决方案?

【问题讨论】:

    标签: mysql insert not-exists


    【解决方案1】:

    你可以这样做:

    if(!$this->sql->query("SHOW TABLES LIKE 'cms_guestbook'")){
        $this->sql->query("
            INSERT
            INTO    cms_modules (title)
            VALUES  ('Guestbook')
          ");
    }
    

    您查询它是否找到一个特定的表,如果它返回 false(检查以确保它返回一个布尔值),则运行您的其他查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-10
      • 1970-01-01
      • 2011-08-27
      • 2013-12-22
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      相关资源
      最近更新 更多