PHP / MySQL:从用户输入创建数据库

时间:2016-07-19 07:44:58

标签: php mysql

如果该数据库不存在,我想基于用户输入创建数据库。问题是,我不明白如何检查数据库是否存在。

另一个问题是我想知道以下代码是否有用:

if (isset($_POST['companyName'])) {
   $companyName = $_POST['companyName'];
}

$query = "
    CREATE DATABASE 'companyName';
       USE 'companyName';
    CREATE TABLE users (
           ID int NOT NULL AUTO_INCREMENT,
           FirstName varchar(255),
           LastName varchar(255),
           user text,
           Password varchar(255),
           Email varchar(255),
           PRIMARY KEY (ID)
   );
";

$result = mysqli_query($conn, $query);

因为基本上我输入了整个SQL代码并且只是查询它,会产生任何问题吗?

我在PHP和MySQL方面没有太多经验,所以感谢您提前注意并提前回答我的问题!

2 个答案:

答案 0 :(得分:0)

首先应该在用于mysql查询之前过滤掉用户输入。使用 htmlspecialchars() stripslashes()函数。

在创建数据库之前,您应该检查它是否存在。您可以使用以下代码执行此操作:CREATE DATABASE IF NOT EXISTS yourdb;

不建议根据用户输入创建数据库和表,但如果没有其他选项,请确保过滤用户输入。

答案 1 :(得分:0)

你可以试试这个

<?php
$servername = 'localhost';
$username = 'root';
$password = 'xxxxx';

$conn = new mysqli($servername, $username, $password);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
// Create database
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
    $conn =  mysqli_connect($servername, $username, $password,'myDB');
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 
    $query = "CREATE TABLE users
          (
            ID int NOT NULL AUTO_INCREMENT,
            FirstName varchar(255),
            LastName varchar(255),
            user text,
            Password varchar(255),
            Email varchar(255),
            PRIMARY KEY (ID)
          )";
    if ($conn->query($query) === TRUE) {
        echo "Table users created successfully";
    } else {
        echo "Error creating table: " . $conn->error;
    }
} else {
    echo "Error creating database: " . $conn->error;
}

$conn->close();
?>

我的结果

enter image description here

但我不建议用户在sql server中创建新数据库。