2017-11-28 14 views
0

XAMPPパッケージの最新バージョンをご使用のコンピュータにインストールしました。Windows 10 Home Single Language Edition。PDOを使用してMySQLで新しいデータベースを作成できないのはなぜですか? PDOを使用して新しいデータベースを作成する前にデータベースを用意する必要がありますか?

私はPHPとMySQLを学んでいます。だから、

、最初にすべての私が書いた新しいデータベースを作成するために、次のコード:

<?php 
    $servername = "localhost"; 
    $username = "root"; 
    $password = ""; 

    try { 
    $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sql = "CREATE DATABASE myDBPDO"; 
    // use exec() because no results are returned 
    $conn->exec($sql); 
    echo "Database created successfully<br>"; 
    } 
    catch(PDOException $e) { 
    echo $sql . "<br>" . $e->getMessage();//Getting 'Notice : Undefined variable : sql' for this line 
    } 

    $conn = null; 
?> 

データベースが作成されませんでしたし、私は、Webブラウザでファイルの上で実行した後、出力に次のエラーを受け取りました:

Notice: Undefined variable: sql in prog_1.php on line 16 

SQLSTATE[HY000] [1049] Unknown database 'mydb' 

私のコードを修正して助けてもらえますか?実際にデータベースの概念を実際に調査することができますか?

PDOを使用してアクセスするときにデータベースが存在する必要がありますか?

P.S. : 'mydb'という名前のデータベースは現在MySQL RDBMSには存在しません。

+0

あなたの接続が失敗した可能性があります –

+0

1つの投稿で2つの質問を避けてください。 –

答えて

-1

myDBSQLSTATE[HY000] [1049])というデータベースがないため、$conn = new PDO()が失敗します。その行が失敗するため、try catchステートメントは、$sql変数を宣言する前にcatch部分に評価されます。したがって、キャッチ部分の$sql変数にアクセスしようとすると、その部分は存在しないため、Undefined variableエラーがスローされます。

$sql$conn = new PDO()行の上に移動して、未定義の変数エラーを修正する必要があります。不足しているデータベースエラーを修正するには、myDBというデータベースを作成する必要があります。


try { 
    $sql = "CREATE DATABASE myDBPDO"; // moved it here 
    $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); 
    // (...) 
} catch(PDOException $e) { 
    echo $sql . "<br>" . $e->getMessage(); // no undefined variable 
} 

は、あなたがこれにあなたの new PDO() DSNを変更する必要があります特定のデータベースを選択せず​​にデータベースに接続するには:

$conn = new PDO("mysql:host=$servername", $username, $password); 

詳細についてはthis answerを確認してください。

+0

データベースmyDBの作成を依頼しています。だから、私はphpMyAdminだけを使ってそれをやろうとしています。 PDOオブジェクト作成ラインを実行可能にするにはどうすればいいですか? PDOを使用して新しいデータベースを作成するときにデータベースが既に存在する必要がありますか? –

+0

これらの点を回答に追加して回答を受け入れるように更新してください。今はコンセプトの理解を助けてくれた+1ですが。 –

+0

@Badshah私の最後のコメントを気にしないでください。そのように接続したい場合は、作成する必要がありますが、[this](https://stackoverflow.com/a/11432418/5914775)のような文字列から 'dbname'変数を省略することができます。 –

0

DSN接続文字列にDB名を設定すると、mydbが存在しません。 DSN文字列からその部分を削除して、もう一度やり直してください。

関連する問題