用户输入后如何命名mysql数据库

时间:2014-01-09 22:00:52

标签: php html mysql

我想知道如何为用户创建一个文本框,然后创建一个以此输入命名的数据库。

<?php
/*
code to connect and make a mysql database named after the user input
*/

?>
<!DOCTYPE HTML>    
<html>
<head>

</head>
<body>
<form action=<?php $_SERVER['PHP_SELF']; ?>>
<input type="text" name="databasename">
<input type="submit" name="submit">
</form>
</body>
</html>

4 个答案:

答案 0 :(得分:4)

它在技术上取决于您使用的DBMS,但只需使用“CREATE DATABASE databasename”进行SQL查询(使用MySQL)即可。

但是,除非您正在创建像PhpMyAdmin这样的数据库管理工具,否则请不要这样做。你只是要求用户在你的系统中乱跑。

这就是基础知识。我恳请你read the documentation on MySQL

答案 1 :(得分:1)

您必须确保用户的输入可用,而不是黑客企图或错误。所以,首先检查输入,然后如果没关系,则创建一个数据库。

这假设您在表单中添加action =“post”。我不喜欢将输入放入“get”,因为那时你的变量是URL的一部分,有些人可能会尝试在那里设置书签。

if(isset($_POST['databasename'])) {  //this lets us know the form has posted
   // 1. Check for acceptable name
   $name = $_POST['databasename'];
   $name = strtolower($name);       //all lowercase (makes things easier to deal with)
   $name = preg_replace("/[^a-z]/", '', $name);  //get rid of things that aren't letters

   if($name != '') {
       // 2. Create the database
       $mysqli = new mysqli('localhost', 'my_user', 'my_password');

       if ($mysqli->connect_error) {
           throw new Exception("Connect Error ($mysqli->connect_errno) $mysqli->connect_error");
       }
       $query = "CREATE DATABASE `$name`";
       $mysqli->query($query);
       if($mysqli->errno) {
           throw new Exception("Error creating database: $mysqli->error");
           // I am pretty sure this is enough to catch the error of the database already existing
       }
       echo "Database $name created.";
    } else {
       throw new Exception("Invalid name");
    }
}

如果我是你,我会把它放在try-catch中以捕获异常并处理它们。

答案 2 :(得分:0)

由于您尚未为表单声明方法,因此默认为GET。

$db_name = $_GET['databasename'];

$host="localhost"; 

$user="username"; 
$password="pa55word"; 

$con=mysqli_connect($host,$user,$password);

// Create database
$query="CREATE DATABASE `$db_name`";
if (mysqli_query($con,$query))
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database...";
  }

如果用户不是root用户,则需要确保已授予用户足够的权限来创建数据库。

答案 3 :(得分:0)

您可以使用此方法检查是否存在具有相同名称的数据库,并通过错误创建它并显示已成功创建

<?php
    if(isset($_POST['submit'])){  //check for the submit button pressed
    $dbname=$_POST['db'];     //store the database name in php variable
    $query= mysqli_connect('localhost','root','')or die("Error establishing connection");      //check for database connectivity
    $a="CREATE DATABASE IF NOT EXISTS ".$dbname;    //create a database if it doesn't already exist
    $q= mysqli_query($query, $a) or die("Database already exist.. please try   different name");
    echo "Your database ".$dbname." is successfully created";
    }
    ?>

对于html表单,请参阅以下代码: -

    <form method="post" action="">
    Enter database name: <input type="text" name="db" /><br/>
    <input type="submit" name="submit" value="submit"/>
    </form>