2012-01-30 27 views
13

Tôi muốn tạo cơ sở dữ liệu. Tại sao db không được tạo bằng mã này?Php mysql tạo cơ sở dữ liệu nếu không tồn tại

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

này đang làm việc, nhưng tôi nghĩ rằng một trong những đầu tiên là thực hành tốt nhất:

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

Trả lời

18

Chỉ cần làm một đơn giản mysql_select_db() và nếu kết quả là false sau đó tiến hành với việc tạo ra.

Ví dụ: hãy xem the first answer here bởi một StackOverflower rất thông minh khác.

<?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

ý tưởng tuyệt vời. cảm ơn bạn! – erdomester

+1

Cập nhật: bây giờ nên sử dụng mysqli_select_db, phải không? - cũng sẽ có ý nghĩa để lặp lại "$ db_selected = mysqli_select_db ('my_db', $ link);" trong điều kiện thành công (tức là bây giờ nó sẽ hoạt động) - hoặc bạn chỉ sử dụng nó để kiểm tra sự tồn tại của cơ sở dữ liệu và không còn cần đến nó nữa không? – Julix

4

Ba bước để sửa lỗi này:

  1. Đừng ghi rõ tên cơ sở dữ liệu khi kết nối.
  2. Câu lệnh SQL của bạn phải được tạo cơ sở dữ liệu IF NOT EXISTS php1.
  3. Gọi mysqli_select_db ($ link, 'php1') để tạo cơ sở dữ liệu mặc định cho kết nối của bạn.
+0

Đó không phải là mã thứ hai mà ông mô tả có hiệu quả không? – Julix

Các vấn đề liên quan