我可以在PHP中使用PDO创建数据库吗?

Xer*_*rri 47 php mysql pdo

我想创建一个使用PDO与MySQL交互的类.我可以使用PDO创建新的MySQL表吗?

Jin*_*hen 103

是的你可以.

dsn部分是PDO构造函数的第一个参数,不必具有数据库名称.你可以简单地使用mysql:host=localhost.然后,如果您拥有正确的权限,则可以使用常规SQL命令来创建数据库和用户等.

以下是install.php中的示例,它使用root登录,创建数据库,用户,并向用户授予对新创建的数据库的所有权限:

<?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());
    }
?>
Run Code Online (Sandbox Code Playgroud)

  • @JingshaoChen感谢您的回答!对于其他人,我花了几个小时调试"创建数据库"查询,只是意识到在"创建数据库`$ db`"字符串中,这些是"反引号"而不是单引号!您必须在BACKTICKS中包含新数据库的名称!希望这可以拯救某人不得不弄清楚同样的事情. (7认同)
  • @thearchitect这么好的答案并不被接受?我感到气馁:( (2认同)