我想创建一个使用PDO与MySQL交互的类。我能够使用PDO创建一个新的MySQL表吗?
可以的。
PDO构造函数的第一个参数dsn
不一定需要指定数据库名,你可以直接使用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
”中,那些是“反引号”,而不是单引号!!你必须用反引号括起新数据库的名称!!希望这能帮助其他人避免因为同样的问题而感到恼怒。 - hypervisor666是的,它是一样的,就像运行常规查询一样,比如“CREATE TABLE ...”。