【问题标题】:Php mysql create database if not existsphp mysql 如果不存在则创建数据库
【发布时间】:2012-01-30 18:22:52
【问题描述】:

我想创建一个数据库。为什么不使用此代码创建 db?

$dbname = 'regulations_db';
    $con = mysql_connect("localhost","root","pass");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }
if (mysql_num_rows(mysql_query("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '". $dbname ."'"))) {
        echo "Database $dbname already exists.";
    }
    else {
        mysql_query("CREATE DATABASE '". $dbname ."'",$con);
        echo "Database $dbname created.";
    }

这是可行的,但我认为第一个是最佳做法:

if (mysql_query("CREATE DATABASE IF NOT EXISTS regulations_db",$con))
    {
        echo "Database created";
    }
    else
    {
        echo "Error creating database: " . mysql_error();
    }

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    只需做一个简单的mysql_select_db(),如果结果为假,则继续创建。

    例如,查看另一个非常聪明的 StackOverflower 的 the first answer here

    <?php
    // Connect to MySQL
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }
    
    // Make my_db the current database
    $db_selected = mysql_select_db('my_db', $link);
    
    if (!$db_selected) {
      // If we couldn't, then it either doesn't exist, or we can't see it.
      $sql = 'CREATE DATABASE my_db';
    
      if (mysql_query($sql, $link)) {
          echo "Database my_db created successfully\n";
      } else {
          echo 'Error creating database: ' . mysql_error() . "\n";
      }
    }
    
    mysql_close($link);
    ?>
    

    【讨论】:

    • 更新:现在应该使用mysqli_select_db,对吧? -- 重复“$db_selected = mysqli_select_db('my_db', $link);”是否有意义在成功条件下(即现在它应该可以工作) - 还是您只使用它来检查数据库是否存在并且因此不再需要它?
    【解决方案2】:

    解决此问题的三个步骤:

    1. 连接时不要指定数据库名称。
    2. 您的 SQL 语句应该是 CREATE DATABASE IF NOT EXISTS php1。
    3. 调用 mysqli_select_db($link, 'php1') 使其成为连接的默认数据库。

    【讨论】:

    • 他描述的第二个代码不就是这样做的吗?
    【解决方案3】:

    如果你使用 MySQLi 面向对象的方法,你可以使用下面的代码,这个代码和之前的答案类似,只是方法不同,我之所以这么说是因为如果有人使用 MySQLi 面向对象的方法,你可以直接使用此代码。

    $servername = "localhost";
    $username = "mysql_user";
    $password = "user_password";
    $dbName = "databaseName";
    
    // Connect to MySQL
    $conn = new mysqli($servername, $username, $password);
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    
    // If database is not exist create one
    if (!mysqli_select_db($conn,$dbName)){
        $sql = "CREATE DATABASE ".$dbName;
        if ($conn->query($sql) === TRUE) {
            echo "Database created successfully";
        }else {
            echo "Error creating database: " . $conn->error;
        }
    } 
    

    另外你可以参考W3school网站here.

    祝你好运! :D

    【讨论】:

      猜你喜欢
      • 2017-03-13
      • 2019-09-09
      • 2015-06-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多