Awais
Awais

Reputation: 81

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

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

Upvotes: 7

Views: 9821

Answers (2)

Dominic Rodger
Dominic Rodger

Reputation: 99751

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

Upvotes: 15

&#193;lvaro Gonz&#225;lez
&#193;lvaro Gonz&#225;lez

Reputation: 146430

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! ;-)

Upvotes: 2

Related Questions