Je souhaite créer une classe qui utilise PDO pour interagir avec MySQL. Puis-je créer une nouvelle table MySQL en utilisant PDO?
Réponses
Trop de publicités?Oui, vous pouvez.
La partie dsn
, qui est le premier paramètre du constructeur PDO, ne doit pas nécessairement avoir un nom de base de données. Vous pouvez simplement utiliser mysql:host=localhost
. Ensuite, si vous avez le privilège approprié, vous pouvez utiliser une commande SQL classique pour créer une base de données et des utilisateurs, etc.
Voici un exemple d'un fichier install.php, il se connecte avec root, crée une base de données, un utilisateur et accorde à l'utilisateur tous les privilèges sur la nouvelle base de données créée:
<?php
$host="localhost";
$root="root";
$root_password="rootpass";
$user='newuser';
$pass='newpass';
$db="newdb";
try {
$dbh = new PDO("mysql:host=$host", $root, $root_password);
$dbh->exec("CREATE DATABASE `$db`;
CREATE USER '$user'@'localhost' IDENTIFIED BY '$pass';
GRANT ALL ON `$db`.* TO '$user'@'localhost';
FLUSH PRIVILEGES;")
or die(print_r($dbh->errorInfo(), true));
} catch (PDOException $e) {
die("DB ERROR: ". $e->getMessage());
}
?>