0

php でデータベースを作成する次のコードは正しいですか?

<?php

    $con=mysql_connect('localhost','admin','admin');
    if(!$con)
    {
        die("could not connect:' .mysql_error());
    }


    $sql = "CREATE DATABASE db1";
    mysql_select_db("db1", $con);
    $sql = "CREATE TABLE year
    (
        ayear varchar(10),
        fyear varchar(10)

    )";
    if(isset($_POST['id'])) 
    { 
        $ayear = $_POST['ayear'];
        $fyear = $_POST['fyear'];
        if($ayear != "" && $fyear != "") 
        {
            $query = "INSERT INTO year VALUES ('$ayear', '$fyear')"; 
            $result = mysql_query($query) or die(mysql_error());
        }
        else 
            echo "one of the field is empty";
     } 
    if (!mysql_query($sql,$con))
    {
         die('Error: ' . mysql_error()); 
    }
    mysql_close($con); 

?> 

コードを実行した後、MySql で作成したデータベースをチェックインすると、データベースが作成されませんでした。コードの問題は何ですか?どうすれば即興できますか?内部で create database コマンドを使用できませんか

4

5 に答える 5

3

データベースを作成するためのクエリを記述しましたが、実行されませんでした。以下のコードをコードに置き換えてください。

$sql = "CREATE DATABASE db1";
mysql_query($sql, $con);
mysql_select_db("db1", $con);
于 2013-01-28T07:19:13.087 に答える
1

多様性のために、そしてここでmysql_ *よりもPDOを使い始める方が良いとよく言うので、これはPDOを使ってそれを行う方法です。

<?php
//Connect to mysql, omit db name since we want to check if db exist
$db = new PDO('mysql:host=localhost;charset=UTF-8', 'user', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

//Create db if it doesn't exist
$sql = "CREATE DATABASE IF NOT EXISTS db1";
$db->exec($sql);
//Select db since we didn't provide that information in DSN
$sql = "USE db1";
$db->exec($sql);
//Create table if doesn't exist
$sql = "CREATE TABLE IF NOT EXISTS `year`
        (ayear varchar(10), fyear varchar(10))";
$db->exec($sql);

//Don't forget to include all your necessary checks somewhere here
if(isset($_POST['id']) && 
   isset($_POST['ayear']) && $_POST['ayear'] && 
   isset($_POST['fyear']) && $_POST['fyear']) { 

    //Don't forget to include the code to check and sanitize user's input
    $ayear = $_POST['ayear'];
    $fyear = $_POST['fyear'];

    //Insert data using prepared statement
    $query = $db->prepare("INSERT INTO `year` VALUES (:ayear, :fyear)"); 
    $query->execute(array(':ayear' => $ayear, ':fyear' => $fyear));

    //Select data from the table
    $sql = "SELECT * FROM `year`";
    foreach ($db->query($sql) as $row) {
        echo "ayear: " . $row['ayear'] . "  fyear: " . $row['fyear'] . "<br>";
    }
} else {
    echo "One of the field is empty.";
}
//Close the connection to the db
$db = null;
?>

免責事項:エラー処理、チェック、入力サニテーションは簡潔にするためにスキップされました。

于 2013-01-28T08:19:33.327 に答える
1

これを試して -

$sql = "CREATE DATABASE db1";
if (mysql_query($sql, $con)) {
    echo "Database db1 created successfully\n";
} else {
    echo 'Error creating database: ' . mysql_error();
}
mysql_select_db("db1", $con);
于 2013-01-28T07:22:51.203 に答える
0

で変更:

$sql = "CREATE DATABASE db1";
$result = mysql_query($sql);

mysql_select_db("db1", $con);

それは仕事であるべきです。db1 という名前のデータベースを作成し、その中にテーブル year も作成します。

于 2013-01-28T07:56:55.193 に答える
0

クエリも実行する必要があります。

$sql = "CREATE DATABASE db1";
mysql_query($sql);

次に、データベースが正常に作成されます。

于 2013-11-30T17:26:20.017 に答える