【问题标题】:Create Database If Not Exists with PDO使用 PDO 创建不存在的数据库
【发布时间】:2013-11-27 22:37:45
【问题描述】:

我正在尝试创建一个数据库安装 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);

【问题讨论】:

  • 为什么要使用 PDO 创建数据库?你明白你在这里没有使用准备好的语句吗(虽然你不能但无论如何)?
  • @Your Common Sense 通常我只会使用 phpMyAdmin 来实际创建数据库,但出于某种随机原因,我们的教授希望我们这样做。
  • @oGeez,谢谢。我刚刚更新了它。
  • 好的,但我同意@YourCommonSense。我想不出你需要用这种方式创建的时间。
  • 如果您在 Web 应用程序上为新用户创建新数据库(例如),您可能希望使用 PDO 来创建数据库。不是因为它允许在这里准备好语句(因为它不允许),而是因为您在整个项目的其余部分使用 PDO。建立不同类型的连接或混淆代码是没有意义的。如果要使用 PDO 与数据库交互,不妨使用 PDO 来创建数据库。

标签: php mysql pdo prepared-statement


【解决方案1】:

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

$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");

【讨论】:

  • 我刚试过我的,它成功了,但我要把这个给你,因为你的更安全。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
  • 2017-03-02
相关资源
最近更新 更多