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
risposta
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());
}
?>
@thearchitect Una buona risposta e non è accettata? Mi sento scoraggiato :( –
le mie scuse ..... non ho visto la risposta fino ad ora – Xerri
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
sì, il suo stesso come esegue una query regolare come "CREATE TABLE ..."
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
@Haim: qual è l'utente root e la password qui? non è id utente e password mysql, giusto? – logan
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