2012-01-30 26 views
13

我想創建一個數據庫。爲什麼不用這個代碼創建數據庫?PHP創建數據庫如果不存在

$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(); 
    } 

回答

18

只是做一個簡單的mysql_select_db(),如果結果是假,則與創作進行。

作爲一個例子,請查看the first answer here另一個非常聰明的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); 
?> 
+0

是個好主意。謝謝! – erdomester 2012-01-30 18:45:31

+1

更新:現在應該使用mysqli_select_db,對吧? - 也可以重複「$ db_selected = mysqli_select_db('my_db',$ link);」在成功的情況下(即現在它應該工作) - 或者你只是用它來檢查數據庫的存在並因此不需要它呢? – Julix 2017-06-11 01:32:25

4

三個步驟來解決這個問題:

  1. 連接時,不要指定數據庫名稱。
  2. 你的SQL語句應該是CREATE DATABASE IF NOT EXISTS php1。
  3. 調用mysqli_select_db($ link,'php1')使該連接的默認數據庫。
+0

這不就是他有效描述的第二個代碼麼? – Julix 2017-06-11 01:34:01

相關問題