Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MYSQL-使用prepared语句删除数据库_Php_Pdo_Drop Database - Fatal编程技术网

PHP/MYSQL-使用prepared语句删除数据库

PHP/MYSQL-使用prepared语句删除数据库,php,pdo,drop-database,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(); } 但不幸的是,我得到了一个异常,表示绑定值($databas

我想删除一个使用PDO的数据库

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

function delete_db($database)
{
  $statement = $my_pdo_obj->prepare("DROP DATABASE IF EXISTS :database");
  $statement->bindParam(":database", $database);
  $statement->execute();
}
但不幸的是,我得到了一个异常,表示绑定值($database)附近存在语法错误:

致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“?”附近使用的正确语法

因此,我尝试按如下方式执行查询

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

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


提前感谢您的想法

据我所知,PDO只接受列名的绑定

也许这个问题对你有帮助


不能对表名、数据库名等使用绑定值


谢谢您的回答!第二个呢,我应该保留它吗?如果你需要在你的应用程序中这样做,为什么不呢。但别忘了防止SQL注入