如果该数据库不存在,我想基于用户输入创建数据库。问题是,我不明白如何检查数据库是否存在。
另一个问题是我想知道以下代码是否有用:
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方面没有太多经验,所以感谢您提前注意并提前回答我的问题!
答案 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();
?>
我的结果
但我不建议用户在sql server中创建新数据库。