使用PDO创建数据库如果不存在

9

我正在尝试创建一个数据库安装的PHP文件,首先使用PDO准备语句尝试创建数据库(如果它不存在),然后连接到这个数据库。我应该这样做吗?还是我漏了什么?

$mysql = new PDO("mysql:host=localhost", $dbusername, $dbpassword);
$pstatement = $mysql->prepare("CREATE DATABASE IF NOT EXISTS $dbname");
$pstatment->execute();
$dbconn = new PDO("mysql:host=localhost;dbname=$dbname", $dbusername, $dbpassword);

5
你为什么想使用PDO创建数据库?你明白在这里你并没有使用预处理语句吗(虽然你无法使用,但是无论如何)? - Your Common Sense
通常我会使用phpMyAdmin来创建数据库,但由于某些原因我们的教授要求我们用这种方式来完成。 - Logan Shire
@oGeez,谢谢。我刚刚更新了它。 - Logan Shire
1
好的,但我同意@YourCommonSense的观点。我想不出有什么时候需要这样创建。 - George
7
如果你正在为网页应用程序中的新用户创建新的数据库,你可能希望使用PDO来创建该数据库。这不是因为它允许在此处使用预处理语句(因为它不允许),而是因为你在整个项目中都在使用PDO。没有必要使用不同类型的连接或混合代码。如果你要使用PDO与数据库交互,那么最好也使用PDO来创建数据库。 - Jeff Vdovjak
显示剩余3条评论
1个回答

28

稍微更明智和安全的代码。

$pdo = new PDO("mysql:host=localhost", $dbusername, $dbpassword);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbname = "`".str_replace("`","``",$dbname)."`";
$pdo->query("CREATE DATABASE IF NOT EXISTS $dbname");
$pdo->query("use $dbname");

我刚试了一下我的,它可以工作,但是我会把这个给你,因为你的更安全。 - Logan Shire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接