web-dev-qa-db-fra.com

Puis-je créer une base de données en utilisant PDO dans PHP

Je veux créer une classe qui utilise PDO pour interagir avec MySQL. Puis-je créer une nouvelle table MySQL à l'aide de PDO?

47
Xerri

Oui, vous pouvez.

La partie dsn, qui est le premier paramètre du constructeur PDO, n'a pas besoin d'avoir un nom de base de données. Vous pouvez simplement utiliser mysql:Host=localhost. Ensuite, étant donné que vous disposez des privilèges appropriés, vous pouvez utiliser la commande SQL standard pour créer une base de données et des utilisateurs, etc.

Voici un exemple provenant 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());
    }
?>
102
Jingshao Chen