2017-01-02 11 views
4

PDOを使用してデータベースを削除します。PHP/MYSQL - 準備済みの文を使用してデータベースを削除する

このアプローチは、最高の1

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

そしてそれは動作します。

私は、準備されたステートメントがなぜ機能していないのか、そして2番目のクエリが保護されているのかどうか不思議でした。

あなたのアイデアを事前におねがいします!

答えて

4

あなたは、テーブル名、データベース名など

http://php.net/manual/ru/pdo.prepare.php#111977あなたの答えのための

+0

感謝のための結合値を使用することはできません!私はそれを維持する必要があります第二のものはどうですか? – Xor

+0

アプリケーションからこれを行う必要がある場合は、そうしないでください。しかし、SQLインジェクションから保護することを忘れないでください –

関連する問題