【问题标题】:Create Table Just Once?只创建一次表?
【发布时间】:2016-10-25 21:34:28
【问题描述】:

我有几个关于创建表格的问题:

    1234563 “创建表”。它似乎在我的虚拟服务器上忽略了它,但我只是想知道这是否是错误的。它是否每次都尝试创建一个新表?可以保留该代码吗?
  1. 我的另一个问题是,假设我进入 PHPMyAdmin 并添加一个名为“角色”的列(用于定义用户的角色)。登录页面会崩溃,因为我在 PHPMyAdmin 中添加了一个列,但如果使用 PHP/MySQL 添加该列,那就完全没问题了。这是为什么呢?

【问题讨论】:

  • 你能发布你创建表的代码吗?以及您正在为登录页面抓取列的位置。这将有助于回答您的问题。
  • 这里有有用的信息。我正在做的是在与登录页面相同的页面上创建我的表格。由于表创建应该是一次性事件,所以我最终做的是创建一个管理页面,我可以在其中一次性上传代码,这远离频繁访问的页面。 Rhazen 的添加“如果不存在”的建议也奏效了。希望这对其他人也有帮助。

标签: php mysql create-table


【解决方案1】:

1.) 这取决于表格的用途。

如果您需要动态创建表,那么您的代码应该每次都检查 如果表存在:

CREATE TABLE IF NOT EXISTS 'yourTable'

但是,如果您只创建表,则无需一遍又一遍地检查是否存在,因此创建这些表的代码应该只执行一次。

2.) 在通过 PHPMyAdmin 添加列后,您需要更新执行插入或读取的函数。第二个问题很难回答,因为我不知道你的功能是做什么的。

【讨论】:

    【解决方案2】:

    每次运行函数时都会执行CREATE TABLE
    最好将语法替换为CREATE TABLE IF NOT EXISTS

    关键字IF NOT EXISTS可防止发生错误,如果 表存在。

    如果不加IF NOT EXISTS会报错。

    参考:http://dev.mysql.com/doc/refman/5.7/en/create-table.html


    请发布您有问题的代码以帮助您进行第二次查询。

    【讨论】:

      【解决方案3】:
      1. 不要CREATE TABLE ... 语句保留在 PHP 代码中,以便它们在每次页面加载时执行。这是不必要的并且容易出错。这些语句没有被忽略,很可能它们正在运行并产生错误,而您根本没有检查错误。

        创建数据库是一个部署步骤,这意味着当您将代码上传到服务器时,这是您创建或修改数据库的唯一一次。围绕管理此过程有完整的工具链可用;在某个时候学习一些关于自动化部署过程和数据库模式版本控制的知识。

      2. 没有看到您的代码和确切的错误消息,一无所知。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-11
        • 2011-01-22
        • 1970-01-01
        • 2019-12-11
        • 1970-01-01
        • 2020-12-04
        • 2016-06-27
        相关资源
        最近更新 更多