用PHP创建数据库

用PHP创建数据库,php,mysql,database,Php,Mysql,Database,我试图允许用户在给定信息的情况下创建数据库,因此为此,我有以下几点: <?php //ini_set('display_errors', 'Off'); if(isset($_POST['siteName'])) { $DBS = htmlspecialchars($_POST['databaseServer']); $DBN = htmlspecialchars($_POST['databaseName']); $DBU =

我试图允许用户在给定信息的情况下创建数据库,因此为此,我有以下几点:

<?php
    //ini_set('display_errors', 'Off');
    if(isset($_POST['siteName'])) {
        $DBS = htmlspecialchars($_POST['databaseServer']);
        $DBN = htmlspecialchars($_POST['databaseName']);
        $DBU = htmlspecialchars($_POST['databaseUser']);
        $DBP = htmlspecialchars($_POST['databasePass']);
        $SN = htmlspecialchars($_POST['siteName']);
        $AU = htmlspecialchars($_POST['adminUser']);
        $AP = htmlspecialchars($_POST['adminPass']);
        $con = new Mysqli($DBS,$DBU,$DBP,$DBN);
        if($con->connect_error) {
            echo "Error : ".$con->connect_error;
        }
        else {
            $sql = "CREAT DATABASE '$DBN'";
            $sql .= "CREATE TABLE options (sitename VARCHAR(30),adminUser VARCHAR(30),adminPass VARCHAR(30),reg_date TIMESTAMP);";
            $sql .= "CREATE TABLE users (ID int(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, userName VARCHAR(30),password VARCHAR(30),reg_date TIMESTAMP);";
            $sql .= "INSERT INTO '$DBN' (sitename,adminUser,adminPass) VALUES ($SN,$AU,$AP);";
            if($con->multi_query($sql) === true) {
                echo " Enjoy .. ! ";
            }
            else {
                echo "Error : ".$sql." : ".$con->error;
            }
        }
    }
?>
手动创建数据库并在“我的表单”中键入其名称时,会出现以下错误:

Error : Unknown database 'name'
Error : CREAT DATABASE 'ex'CREATE TABLE options (sitename
VARCHAR(30),adminUser VARCHAR(30),adminPass VARCHAR(30),reg_date 
TIMESTAMP);CREATE TABLE users (ID int(6) UNSIGNED AUTO_INCREMENT PRIMARY
KEY, userName VARCHAR(30),password VARCHAR(30),reg_date     
TIMESTAMP);INSERT 
INTO 'ex' (sitename,adminUser,adminPass) VALUES (My Phone 
Book,admin,102030); : You have an error in your SQL syntax; check the    
manual that corresponds to your MySQL server version for the right
syntax to use near 'CREAT DATABASE 'ex'CREATE TABLE options (sitename 
VARCHAR(30),adminUser VARCHAR(' at line 1
如何修复此问题?

将行更改为

$sql="CREATE DATABASE ". $DBN.";";
$sql.="CREATE TABLE options (sitename VARCHAR(30),adminUser VARCHAR(30),adminPass VARCHAR(30),reg_date TIMESTAMP);";
    $sql.="CREATE TABLE users (ID int(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, userName VARCHAR(30),password VARCHAR(30),reg_date TIMESTAMP);";
    $sql.="INSERT INTO  options  (sitename,adminUser,adminPass) VALUES ($SN,$AU,$AP);";

如果要使用PHP变量创建数据库,则需要使用
use
语句。之后,您可以在MySQL中创建表

请尝试以下代码:

<?php
//ini_set('display_errors', 'Off');
if (isset($_POST['siteName'])) {
    $DBS = htmlspecialchars($_POST['databaseServer']);
    $DBN = htmlspecialchars($_POST['databaseName']);
    $DBU = htmlspecialchars($_POST['databaseUser']);
    $DBP = htmlspecialchars($_POST['databasePass']);
    $SN = htmlspecialchars($_POST['siteName']);
    $AU = htmlspecialchars($_POST['adminUser']);
    $AP = htmlspecialchars($_POST['adminPass']);
    if ($con->connect_error) {
        echo "Error : " . $con->connect_error;
    } else {
        $sql = "CREATE DATABASE $DBN";
        $con->query($sql);
        $con->query("use `$DBN`");
        $sql = "CREATE TABLE options (sitename VARCHAR(30),adminUser VARCHAR(30),
           adminPass VARCHAR(30),reg_date TIMESTAMP);";
        $con->query($sql);
        $sql = "CREATE TABLE users (ID int(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            userName VARCHAR(30),password VARCHAR(30),reg_date TIMESTAMP);"
            $con->query($sql);
    }
    if ($con->query($sql) === true) {
        echo " Enjoy .. ! ";
    } else {
        echo "Error : " . $sql . " : " . $con->error;
    }

在亲爱的@MagnusEriksson的帮助下,我终于解决了我的问题:
1.我应该从连接数据库的代码中删除@DBN

2.
sql=“创建数据库'$DBN'”
应更改为
sql=“创建数据库$DBN”

在创建MySQLi实例之前,您正在尝试选择数据库
$DBN
(创建MySQLi实例时)。您需要在没有数据库的情况下连接到MySQL,创建数据库,然后选择它DATABASE@MagnusEriksson我不知道用这个代码实际上我可以创建一个数据库或选择一个可用的数据库?!!如果我能选择,我怎么能建立一个数据库?!谢谢。@denny谢谢你,但是没有零钱!检查手册:当我输入一个可用的数据库名称时,得到这个:错误:createdatabaseex;创建表选项(sitename VARCHAR(30)、adminUser VARCHAR(30)、adminPass VARCHAR(30)、reg_日期时间戳);创建表用户(ID int(6)无符号自动递增主键、用户名VARCHAR(30)、密码VARCHAR(30)、注册日期时间戳);插入“ex”(sitename、adminUser、adminPass)值(我的电话簿,管理员,102030);:无法创建数据库“ex”;数据库存在这将不起作用。他的代码和数据库查询中有更多错误..您在db中插入时将其更改为table
option
@MohammadTaghiGhandili-“无法创建数据库'ex';数据库存在”-有点告诉您problem@MagnusEriksson我糊涂了!这段代码创建一个数据库或选择一个数据库?!!如果是这样,为什么我会出错:它的名字未知。如果选择。。?!