0

私は php と mysql から始めたばかりです。これまで VB を使っていましたが、これは非常にシンプルで、今では php のすべてのビットに苦労しています。ルートとしてmysqlサーバーに接続し、テキストフィールドに入力された名前でデータベースを作成する小さなコードを作成しましたが、ページをロードするたびに、データベース名を入力してヒットする前にエラーメッセージが表示されますボタン。コードは機能しますが、紛らわしいエラー メッセージが表示されます。

Notice: Undefined index: dbname in C:\xampp\htdocs\dbcreation.php 行 53 データベースの作成中にエラーが発生しました: SQL 構文にエラーがあります。行の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

<?php
$databasename = $_POST['dbname'];
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
if (mysql_query("CREATE DATABASE $databasename",$con))
{
echo "Database created";
}
else
{
echo "Error creating database: " . mysql_error();
}
mysql_close($con);
?>

ボタンを押すまでコードが実行されないようにするには、何を変更する必要がありますか?

4

5 に答える 5

3

変数が存在するかどうかを確認します。

if(!empty($_POST['dbname'])){
    // execute code
}
于 2013-01-24T16:26:01.760 に答える
0

MySQL エラーをデバッグする場合、エラーの後にクエリを表示できます。

...
}
if (mysql_query("CREATE DATABASE $databasename",$con)) {
...

になる

...
}
$query = "CREATE DATABASE $databasename";
$succes = mysql_query($query, $con) or die("Query: '".$query."' failed: ".mysql_error());
if ($succes) {
...

いくつかのアドバイス: mysql の代わりにmysqliを使用してください。

于 2013-01-24T16:32:52.257 に答える
0

フォームが送信されていない場合でも、クエリは実行されています。まず、フォームが送信されたかどうかを確認する必要があります。例えば:

if(!empty($_POST['dbname']))
{
    // Handle stuff here.
}

ただし、いくつかの点を指摘したいと思います。

  • 関数の使用は避けてくださいmysql_*。現在は廃止されてmysqliおり、最低限使用する必要があります。
  • コードは SQL インジェクションに対して深刻な脆弱性があるため、SQL インジェクションについて読みたいと思うかもしれません。
于 2013-01-24T16:27:17.463 に答える
0

isset() 関数を使用して、変数が既に設定されているかどうかを確認できます。

<?php
if(isset($_POST['dbname']))
{
    $databasename = $_POST['dbname'];
    $con = mysql_connect("localhost","root","");
    if (!$con)
    {
        die('Could not connect: ' . mysql_error());
    }
    if (mysql_query("CREATE DATABASE $databasename",$con))
    {
        echo "Database created";
    }
    else
    {
        echo "Error creating database: " . mysql_error();
    }
    mysql_close($con);
}
?>
于 2013-01-24T16:27:47.030 に答える
0

これを試して:

$host="";//Host name
$username="";//MYSQL username
$password="";//MYSQL password
$db_name="";//Database name

//connect to server and select database
try{
$conn = new PDO('mysql:host='.$host.';dbname='.$db_name.'',$username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);}
catch(PDOException $e){
echo 'ERROR: ' . $e->getMessage();}


//post vars
$dbname=$_POST['dbname']
if(empty($dbname))
{
die("you did not enter a database name")
}

$sql="CREATE DATABASE". $databasename."";
$result=$conn->query($sql);
if($result !=false){
echo "Data inserted!";
}
else{
die("Error inserting data");
}

将来的には、PDO を使用して SQL データベースに接続してみてください。PDO 接続の良い例は、ここに残したものです。

于 2013-01-24T16:44:15.747 に答える