我想知道如何为用户创建一个文本框,然后创建一个以此输入命名的数据库。
<?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>
答案 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>