2010-04-06 21 views
41

? Quiero crear una clase que use PDO para interactuar con MySQL. ¿Puedo crear una nueva tabla MySQL usando PDO?¿Puedo crear una base de datos usando PDO en PHP

+2

el título habla de crear una base de datos, pero se pregunta habla de la creación de una mesa. Estas son dos cosas muy, muy diferentes. – Mawg

Respuesta

87

Sí, se puede.

La parte dsn, que es el primer parámetro del constructor PDO, no tiene que tener un nombre de base de datos. Simplemente puede usar mysql:host=localhost. Entonces, dado que tiene el privilegio correcto, puede usar el comando SQL regular para crear bases de datos y usuarios, etc.

El siguiente es un ejemplo de un install.php, inicia sesión con root, crea una base de datos, un usuario, y conceder al usuario todos los privilegios a la nueva base de datos creada:

<?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 ¿Tan buena respuesta y no es aceptada? Me siento desanimado :( –

+0

mis disculpas ..... no vi la respuesta hasta ahora – Xerri

+0

Solo tenga en cuenta que en los planes de alojamiento de cPanel, no podrá ver su base de datos excepto mediante el uso de phpmyadmin o línea de comando - ganó aparece en cPanel en el panel de control "bases de datos MySQL" – Volomike

-1

sí, es igual como ejecutar una consulta regular como "CREATE TABLE ..."

+1

Al crear una conexión PDO, necesita asociar esa conexión con una base de datos ¿verdad? Me preguntaba si eso se puede evitar o si sería peligroso usar la base de datos predeterminada mysql o si sería mejor crear una base de datos vacía a la que se pueda conectar PDO. – Xerri

+0

@Haim: ¿Cuál es el usuario root y la contraseña aquí? no es la identificación de usuario y la contraseña de mysql ¿verdad? – logan

Cuestiones relacionadas