【问题标题】:mysqli and php adding columns inmysqli 和 php 在中添加列
【发布时间】:2021-07-02 18:49:13
【问题描述】:

我想在 MySQL 中的表中添加一列。我正在使用 MySQLi,在下面的代码中,我编写了我从研究中看到的代码。如果它在 if 语句中,它还会执行吗?另外,我需要将$mysqli->query("ALTER TABLE tableName ADD ColumnName varchar(255) NOT NULL" 保留在connect() 函数中,还是在执行一次后将其删除?

function connect()
    {
        require_once 'Constants.php';

        // Connecting to mysql database
        $this->conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

        // Check for database connection error
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }

        if (!$mysqli->query("ALTER TABLE tableName ADD ColumnName varchar(255) NOT NULL")) {
            echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
        }
        // returing connection resource
        return $this->conn;
    }

【问题讨论】:

  • 您通常会使用 SQL 脚本更改表,而不是每次连接到数据库时都添加它。
  • 数据库结构修改语句通常与核心应用程序逻辑分开执行,以确保您只执行一次。以 laravel 迁移为例。
  • 更改表时,更改是永久性的。您只需执行一次。
  • 表中是否已经有一些行?如果是这样,当您添加一个非 NULL 但没有 DEFAULT 值的新列时,您认为现有行的新列中将存储什么?

标签: php mysql mysqli


【解决方案1】:

如果在if语句中,它还会执行吗?

显示了两个“if”语句。第一个与成功连接有关,并且其中没有 ALTER TABLE 查询,所以我假设您不是那个意思。但是:如果你这样做了......它只会在连接成功时执行,显然。

第二条语句作为 if 语句的一部分执行,实际上在 if 语句之前,因此 if 语句可以评估 sql 查询的输出是真还是假。所以是的,它将在 if 语句中执行。

我需要在 connect() 函数中保留 $mysqli->query("ALTER TABLE tableName ADD ColumnName varchar(255) NOT NULL" 还是在执行一次后将其删除?

如果您每次都创建一个新表并要求每次运行应用程序时都添加此列/字段,那么每次都需要添加此列/字段。然而,这将是一个不寻常的情况。如果您不是每次都创建新表,并且您已经创建了该列/字段,则此查询将失败,因为您不能两次添加相同的字段。这将是一种测试列/字段是否已经创建的方法,但是还有其他方法不会导致 mysql 错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2015-04-23
    • 2021-02-11
    相关资源
    最近更新 更多