因此,我的代码片段会导致错误:
$con = mysqli_connect('localhost', 'root', '', 'notesDB');
if(isset($_POST['tableName'])) {
$tName = htmlentities($_POST['tableName']);
$firstQuery = mysqli_query($con,"INSERT into notes(Title) VALUES( '$tName'); CREATE TABLE $tName(id int NOT NULL AUTO_INCREMENT, Title varchar(20) NOT NULL, Description varchar(100), PRIMARY KEY(id));");
if($firstQuery){
header("Location: create2.php");
}
else
echo mysqli_error($con);
}
这个输出是:
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 'CREATE TABLE test1(id int NOT NULL AUTO_INCREMENT, Title varchar(20) NOT NULL, D' at line 1
好吧,有趣的是,确切的代码(除了变量 - 我刚刚删除了$符号)在phpMyAdmin中完美执行。
另外,为了证明php没有什么问题,当它只是INSERT查询(而不是CREATE查询)时,执行的查询没有任何错误。
答案 0 :(得分:3)
答案 1 :(得分:1)
您尝试在代码中一次运行两个单独的查询,但您无法像这样运行。您必须单独运行它们,如下所示:
$con = mysqli_connect('localhost', 'root', '', 'notesDB');
if(isset($_POST['tableName'])) {
$tName = htmlentities($_POST['tableName']);
$firstQuery = mysqli_query($con,"INSERT into notes(Title) VALUES( '$tName')");
$secondQuery = mysqli_query("CREATE TABLE '$tName' (id int NOT NULL AUTO_INCREMENT, Title varchar(20) NOT NULL, Description varchar(100), PRIMARY KEY(id));");
if($firstQuery || $secondQuery){
header("Location: create2.php");
}
else
echo mysqli_error($con);
}
答案 2 :(得分:1)
您的数据库架构错误 您不应该动态创建表。因此,您只需使用简单的常规INSERT查询注册任何新实体。然后使用此实体的id链接来自另一个[已存在]表的记录。
if(isset($_POST['tableName'])) {
$stm = mysqli_prepare($con,"INSERT into notes(Title) VALUES(?)");
$stm->bind_param("s",$_POST['tableName']);
$stm->execute();
}