7

How do I create a database if it doesn't exist, using PHP?

1
  • Why would you want this? Databases are usually manually precreated. But you may have a valid reason, who knows... Commented Jun 28, 2010 at 10:11

2 Answers 2

15

Presuming you're talking about a MySQL database - you want to use mysql_query and mysql_select_db.

Note that mysql_create_db is deprecated.

<?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);
?>
Sign up to request clarification or add additional context in comments.

Comments

2

Since you mention WAMP I'll assume you're talking about MySQL.

It can be tricky. Assuming that your PHP script runs with all the required credentials (which is by itself a questionable idea), you can run this query:

SHOW DATABASES

If the DB does not show up there, you can assume it doesn't exist and create it with one of these queries:

CREATE DATABASE foo ....

or:

CREATE DATABASE IF NOT EXISTS foo ...

Right after that, you need to check the return value for whatever PHP function you are using (e.g. mysql_query). The above queries will fail if your user is now allowed to see all the existing databases or it's not allowed to create new databases.

In general, I find the whole concept kind of scary. Handle it with care! ;-)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.