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

19

我想创建一个数据库。为什么使用这段代码不会创建数据库?

$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();
    }
3个回答

26

只需简单地使用mysql_select_db(),如果结果为false,则继续创建。

例如,请查看这里的第一个答案,由另一位非常聪明的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);
?>

4
更新:现在应该使用mysqli_select_db,对吗?此外,在成功的情况下重复使用"$db_selected = mysqli_select_db('my_db', $link);"是有意义的吗(即现在它应该可以工作了),还是你仅仅用它来检查数据库是否存在,因此不需要进一步使用它? - Julix
mysql_select_db --> 对我来说无法识别。 - Mona Jalal

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;
    }
} 

此外,您可以参考W3school网站这里。

祝好运!:D


5

解决此问题的三个步骤:

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

他所描述的第二段代码不就是有效地实现了这个吗? - Julix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接