php-mysqli-如果不存在则创建数据库

时间:2019-04-19 04:09:41

标签: php mysqli

我正在使用PHP和mysqli,并尝试创建数据库(如果dbLogin文件中不存在该数据库)。似乎应该做的很简单。似乎在第一次创建尝试时就挂了一个错误,并且不会越过或抓住错误。

这是我非常简单的代码:

    <?php

    $con = '';

    try {
        $con = new mysqli("host", "user", "pass", "db");
    }
    catch(Exception $e) {
        echo "Error: $e<br />";
        $con = new mysqli("host", "user", "pass");
        $con->query("CREATE DATABASE IF NOT EXISTS db;");
    }
    /* check connection */
    if ($con->connect_errno) {
        printf("Connect failed: %s\n", $con->connect_error);
        exit();
    }

?>

现在,当我运行上面的代码时,我得到的只是以下错误:

  

警告:mysqli :: __ construct():(HY000 / 1049):未知数据库   第6行的xyz \ DBLogin.php中的'db'   失败:未知数据库'db'

第6行是try块内的行。它不会创建数据库,也不会越过错误。

1 个答案:

答案 0 :(得分:2)

您的问题是mysqli::__construct仅在无法连接到数据库时才生成警告,并且您不能直接捕获警告。现在您可以解决该问题(例如,参见this question),但是执行以下操作可能更简单:

$con = new mysqli("host", "user", "pass");
if ($con->connect_errno) {
    printf("Connect failed: %s\n", $con->connect_error);
    exit();
}
if (!$con->select_db('db')) {
    echo "Couldn't select database: " . $con->error;
    if (!$con->query("CREATE DATABASE IF NOT EXISTS db;")) {
        echo "Couldn't create database: " . $con->error;
    }
    $con->select_db('db');
}