'how to see if database exists with PDO [duplicate]
So I recently decided to switch to PDO due to the mysqli prepared statement complexity and irregularities. This was my mysqli function to test for a database:
public static function is_database($database) {
self::connect();
if( mysqli_select_db(self::$conn,$database) ) {
self::$dbname = $database;
return true;
} else {
return false;
}
self::disconnect();
}
The only thing I've read so far about PDO and a database of anything was this:
$pdo->exec("use database");
Which is not what I want, unless using this with a try catch would work. Something of this sort
public static function is_database($database){
self::connect();
try {
self::$conn->exec('use '.$database);
return true;
} catch(PDOException $e){
print($e->getMessage();
return false;
die();
}
}
Need a little assistance for the 1 hour new PDO user. Thanks for any advice.
Solution 1:[1]
In accordance with the query found at How to check if mysql database exists
$stmt = $pdo->query("SELECT COUNT(*) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = 'DBName'");
return (bool) $stmt->fetchColumn();
We check the count which will return 1 or 0 and type cast it as an boolean (true/false).
Of course this requires an existing connection through PDO. This wouldn't work for you to check the database before the first connection.
Solution 2:[2]
A very simple answer execute your code in "try-catch" exception; and if you want to throw an error then echo your error and if you don't then just live empty your catch block; how useful try catchs are
- if DB does not exist it will create
- error of your choice or no error
the example is given below.
try {
$conn->exec($sql);
} catch (PDOException $th) {
echo "<br> sql error";
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Your Common Sense |
Solution 2 |