【发布时间】:2011-02-04 17:41:54
【问题描述】:
我想创建一个使用 PDO 与 MySQL 交互的类。我可以使用 PDO 创建一个新的 MySQL 表吗?
【问题讨论】:
-
标题说的是创建数据库,但他的问题说的是创建表。这是两件非常非常不同的事情。
我想创建一个使用 PDO 与 MySQL 交互的类。我可以使用 PDO 创建一个新的 MySQL 表吗?
【问题讨论】:
是的,它是一样的,就像运行像“CREATE TABLE ...”这样的常规查询。
【讨论】:
是的,你可以。
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());
}
?>
【讨论】:
$db”字符串中,那些是“反引号”而不是单引号!!!您必须在 BACKTICKS 中将新数据库的名称括起来!!希望这可以避免人们不得不弄清楚同样的事情的烦恼。