2013-07-11 9 views
5
<?php 
    $login = 'root'; 
    $password = 'root'; 
    $dsn = "mysql:host=localhost"; 
    $dbb = 'account'; 
    $opt = array(
    // any occurring errors wil be thrown as PDOException 
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
    // an SQL command to execute when connecting 
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'" 
    ); 

    // Making a new PDO conenction. 
    $conn = new PDO($dsn, $login, $password,$opt); 

    $db = $conn->prepare("CREATE SCHEMA IF NOT EXISTS `?` "); 
    $db->bindParam(1, $dbb); 
    $db->execute();   

    ?> 

正しく動作しますが、名前が「アカウント」のシングルクォートでデータベースを作成すると、シングルクォートを削除する方法はわかります。私は多くのことを試みますが、それは取り除かれません。PDOでデータベースを作成するbindParam

+4

テーブル名、列名、データベース名などのエンティティ名にはプレースホルダを使用できません。 – hek2mgl

+0

スクリプトからデータベースを作成する必要があるのはなぜですか?アプリインストールスクリプト以外にも、それを必要とするものはほとんどありません。 –

+0

それではdbの作り方 – Pankaj

答えて

1

これは働いている:

<?php 
$login = 'root'; 
$password = 'root'; 
$dsn = "mysql:host=localhost"; 
$dbb = 'account'; 
$opt = array(
// any occurring errors wil be thrown as PDOException 
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
// an SQL command to execute when connecting 
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'" 
); 

// Making a new PDO conenction. 
$conn = new PDO($dsn, $login, $password,$opt); 

$db = $conn->prepare("CREATE SCHEMA IF NOT EXISTS $dbb "); 
$db->execute();   

?> 

私はあなたがテーブル、列名とデータベース名のようなものをホワイトリストに登録することになっているhttp://www.php.net/manual/en/book.pdo.phpによるとbindParam

1

を使用してデータベースを準備することができないと思います。

試してください。

$db = $conn->prepare("CREATE SCHEMA IF NOT EXISTS " . $dbb); 
$db->execute(); 
+0

これは動作していません.. showing error: – Pankaj

関連する問題