2017-01-02 60 views
4

我想使用PDO刪除數據庫。PHP/MYSQL - 使用預處理語句刪除數據庫

這種方法是最好的之一,我

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

但不幸的是,我有一個PDOException說,附近有我的綁定值語法錯誤($數據庫):

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); 
} 

它的工作原理。

我想知道爲什麼準備好的語句不工作,如果第二個查詢是安全的。

在此先感謝您的想法!

回答

4

不能爲表名,數據庫名稱等

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

+0

謝謝您的回答使用綁定值!第二個呢,我應該保留它嗎? – Xor

+0

如果您需要從您的應用程序執行此操作,爲什麼不呢。但不要忘記防止SQL注入 –