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

Это работает, но я считаю, что первая из них – лучшая практика:

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

Просто выполните простой 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); ?> 

Три шага, чтобы исправить это:

  1. Не указывайте имя базы данных при подключении.
  2. Ваш оператор SQL должен быть CREATE DATABASE, ЕСЛИ НЕ СУЩЕСТВУЕТ php1.
  3. Вызовите mysqli_select_db ($ link, 'php1'), чтобы сделать эту базу данных по умолчанию для вашего соединения.