Php mysql创建数据库(如果不存在)

erd*_*ter 16 php mysql

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

$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.";
    }
Run Code Online (Sandbox Code Playgroud)

这是有效的,但我认为第一个是最好的做法:

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

bul*_*ley 19

只做一个简单的mysql_select_db(),如果结果是假的,那么继续创建.

举个例子,请看另一个非常聪明的StackOverflower 的第一个答案.

<?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);
?>
Run Code Online (Sandbox Code Playgroud)

  • 更新:现在应该使用mysqli_select_db,对吧? - 重复"$ db_selected = mysqli_select_db('my_db',$ link);"也是有意义的." 在成功条件下(即现在它应该工作) - 或者你只是用它来检查数据库是否存在并且因此不再需要它? (2认同)

小智 5

修复此问题的三个步骤:

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


小智 5

如果你使用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;
    }
} 
Run Code Online (Sandbox Code Playgroud)

此外,您可以在此处参考 W3school 网站

祝你好运!:D