PHP/MYSQL - 使用准备好的语句删除数据库

标签 php pdo drop-database

我想使用 PDO 删除数据库。

这种方法对我来说是最好的方法

function delete_db($database)
{
  $statement = $my_pdo_obj->prepare("DROP DATABASE IF EXISTS :database");
  $statement->bindParam(":database", $database);
  $statement->execute();
}

但不幸的是,我收到一个 PDOException,说我的绑定(bind)值 ($database) 附近存在语法错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1'

所以我尝试按如下方式执行查询

function delete_db($database)
{
  $statement = $my_pdo_obj->exec("DROP DATABASE IF EXISTS " . $database);
}

而且有效。

我想知道为什么准备好的语句不起作用,以及第二个查询是否安全。

提前感谢您的想法!

最佳答案

您不能对表名、数据库名等使用绑定(bind)值。

http://php.net/manual/ru/pdo.prepare.php#111977

关于PHP/MYSQL - 使用准备好的语句删除数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41430780/

相关文章:

php - PHP 中的 Sharepoint GetListItemChangesSinceToken CURL 请求

php - PDO - 真实的事实和最佳实践?

c# - 使ADO.NET(和EntityFramework)发布数据库

postgresql - 当存在事件连接时删除数据库

php - codeigniter 总是显示 404 错误 ubuntu 14.04

php - 在 Javascript 中从 PHP 检索数据

php - 在 foreach 循环内运行第二个查询?

postgres-xl - 在 Postgres 中删除名称中包含 "minus"的数据库

php - 使用复选框不起作用删除多个 mysql 行

php - PDO PHP从关联数组插入数据库