2010-04-06 4 views
41

Voglio creare una classe che usi PDO per interagire con MySQL. Posso creare una nuova tabella MySQL usando PDO?Posso creare un database usando PDO in PHP

+2

Il titolo parla di creazione di un database, ma la domanda parla di creazione di una tabella. Queste sono due cose molto, molto diverse. – Mawg

risposta

87

Sì, è possibile.

La parte dsn, che è il primo parametro del costruttore PDO, non deve avere un nome di database. Puoi semplicemente usare mysql:host=localhost. Quindi, dato che hai il privilegio giusto, puoi usare il normale comando SQL per creare database e utenti, ecc.

Di seguito è riportato un esempio da un install.php, si accede con root, si crea un database, un utente, e concedere all'utente tutti i privilegi per il nuovo database creato:

<?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()); 
    } 
?> 
+2

@thearchitect Una buona risposta e non è accettata? Mi sento scoraggiato :( –

+0

le mie scuse ..... non ho visto la risposta fino ad ora – Xerri

+0

Basta notare che su piani di hosting cPanel, non sarai in grado di vedere il tuo database se non usando phpmyadmin o riga di comando - ha vinto Si visualizzano in cPanel sotto il pannello di controllo "MySQL Databases" – Volomike

-1

sì, il suo stesso come esegue una query regolare come "CREATE TABLE ..."

+1

Quando si crea una connessione PDO, è necessario associare quella connessione con un database giusto? Mi chiedevo se fosse possibile evitarlo o se fosse pericoloso utilizzare il database mysql predefinito o se fosse preferibile creare un database vuoto a cui connettersi tramite PDO. – Xerri

+0

@Haim: qual è l'utente root e la password qui? non è id utente e password mysql, giusto? – logan