【问题标题】:Can I create a database using PDO in PHP?我可以在 PHP 中使用 PDO 创建数据库吗?
【发布时间】:2011-02-04 17:41:54
【问题描述】:

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

【问题讨论】:

  • 标题说的是创建数据库,但他的问题说的是创建表。这是两件非常非常不同的事情。

标签: php mysql pdo


【解决方案1】:

是的,它是一样的,就像运行像“CREATE TABLE ...”这样的常规查询。

【讨论】:

  • 创建 PDO 连接时,您需要将该连接与数据库相关联,对吗?我想知道是否可以避免这种情况,或者使用默认的 mysql 数据库是否会很危险,或者最好只创建一个 PDO 可以连接到的空数据库。
  • @Haim:这里的root用户和密码是什么?它不是mysql用户名和密码吗?
【解决方案2】:

是的,你可以。

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

【讨论】:

  • @thearchitect 这么好的答案,不被接受?我感到气馁:(
  • 请注意,在 cPanel 托管计划中,除非使用 phpmyadmin 或命令行,否则您将无法看到您的数据库——它不会显示在 cPanel 中的“MySQL 数据库”控制面板下.
  • @JingshaoChen 感谢您的帮助!对其他人来说,我花了几个小时调试“创建数据库”查询,才意识到在“创建数据库$db”字符串中,那些是“反引号”而不是单引号!!!您必须在 BACKTICKS 中将新数据库的名称括起来!!希望这可以避免人们不得不弄清楚同样的事情的烦恼。
  • @Volomike 我很困惑 - 如果我的网站有 Cpanel,我可以使用它吗?我试过了,但它似乎不起作用
  • 我们可以用 Postgres 做类似的事情吗?
猜你喜欢
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 2012-02-13
  • 1970-01-01
  • 2020-11-25
相关资源
最近更新 更多