【问题标题】:MySQL need to reload twice to create table inside the database with phpMySQL 需要重新加载两次才能使用 php 在数据库中创建表
【发布时间】:2022-01-07 08:53:42
【问题描述】:

目前我面临一个问题,无法同时创建表和数据库。下面是我正在使用的代码。

<?php
    DEFINE ('DB_USER', 'root');
    DEFINE ('DB_PASSWORD', '');
    DEFINE ('DB_HOST', 'localhost');
    DEFINE ('DB_NAME', 'enquiry');

    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD);

    // Make my_db the current database
    $db_selected = mysqli_select_db($dbc, 'enquiry');

    if (!$db_selected) {
      // If we couldn't, then it either doesn't exist, or we can't see it.
        $sql = 'CREATE DATABASE enquiry';

        if (mysqli_query($dbc, $sql)) {
            echo "Database enquiry created successfully";
        } else {
            echo 'Error creating database: ' . mysqli_error($dbc);
        }
    }

    if ($dbc){
        echo "Connected to database";
    } else {
        echo "Could not connect to database";
    }

    $create_table = "CREATE TABLE enquiry (
                                            id INT PRIMARY KEY AUTO_INCREMENT,
                                            first_name VARCHAR(20),
                                            last_name VARCHAR(35),
                                            email VARCHAR(255) NOT NULL,
                                            phone INT,
                                            street_address TEXT,
                                            city VARCHAR(25),
                                            state VARCHAR(25),
                                            postcode INT,
                                            subject VARCHAR(255),
                                            service VARCHAR(20),
                                            comment TEXT
                                        )";

    
    if (mysqli_query($dbc, $create_table)) {
        echo "Table Enquiry created successfully";
    } else {
        echo "Error creating table: " . mysqli_error($dbc);
    }

    mysqli_close($dbc);
?>

基本上,如果特定数据库不存在,此代码将创建一个数据库。然后,我需要创建一个表,因为我将立即使用数据库。但是,我不明白为什么我需要重新加载网页两次,以便程序为我创建表格。我已经尝试过loops 和 sleep() 功能,但没有任何效果。有没有办法同时创建数据库和表?

这是我加载一次时收到的消息。

Database enquiry created successfully 
Connected to database 
Error creating table: No database selected

这是我重新加载时收到的消息。

Connected to database
Table Enquiry created successfully

所以你,我不知道如何解决这个问题。

【问题讨论】:

  • 第一次运行时,您在数据库存在之前选择它。您仍然连接,但没有选择数据库。第二次您可以选择已经存在的数据库。解决方法:创建后直接选择数据库。
  • 好的,非常感谢您的指导,我现在就试试。
  • 谢谢,解决方案有效^^

标签: php mysql mysqli


【解决方案1】:

尝试类似:

// ...

    $db_selected = mysqli_select_db($dbc, 'enquiry');

    if (!$db_selected) {
        // If we couldn't, then it either doesn't exist, or we can't see it.
        $sql = 'CREATE DATABASE enquiry';

        if (mysqli_query($dbc, $sql)) {
            echo "Database enquiry created successfully";
            $db_selected = mysqli_select_db($dbc, 'enquiry');
        } else {
            echo 'Error creating database: ' . mysqli_error($dbc);
        }
    }

// ...

您在表存在之前选择,并且选择两次应该可以解决,我的意思是在上面我在 DB 创建查询之后添加了另一个选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2019-09-29
    相关资源
    最近更新 更多