我想使用PDO删除数据库。
这种方法对我来说是最好的方法
function delete_db($database)
{
$statement = $my_pdo_obj->prepare("DROP DATABASE IF EXISTS :database");
$statement->bindParam(":database", $database);
$statement->execute();
}
但不幸的是,我收到一条PDOException,说我的绑定值($ database)附近有语法错误:
致命错误:带有消息'SQLSTATE [42000]的未捕获异常'PDOException':语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,以便在'?'附近使用正确的语法在第1行
所以我尝试按照以下方式执行查询
function delete_db($database)
{
$statement = $my_pdo_obj->exec("DROP DATABASE IF EXISTS " . $database);
}
它有效。
我想知道为什么准备好的声明不起作用,如果第二个查询是安全的话。
提前感谢您的想法!
答案 0 :(得分:4)
您不能对表名,数据库名等使用绑定值。
答案 1 :(得分:0)