我正在尝试插入一个新主题和相应的文件夹以及一个表格 subject但只有create table语句在其他语句工作时不起作用 很好。如果我正在复制"创建表"语句直接进入mysql然后它 工作但在此代码中遇到问题。
if(isset($_GET['Subject'])) {
$subj = $_GET['subject'];
$re = "insert into branches(branch) values('$subj')";
if(!mysql_query($re)) {
echo "<h3>Dublicate Subject! or Error in inserting data</h3>";
}
else {
mkdir("../$subj");
$re = "create table $subj (id int(8) primary key auto_increment, sub_dir varchar(40) unique)";
if(!mysql_query($re)) {
echo "<h3>Cannot create Table named '$subj' but subject is inserted! First Delete it!</h3>";
}
}
}
答案 0 :(得分:1)
错误消息:您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的“
add (id int(8) primary key auto_increment, sub_dir varchar(40) unique)
”附近使用正确的语法
ADD
是MySQL保留字。要将它用作数据库对象,请用后面的刻度包围它。
但是,在计算中避免对数据库对象名称或表达式名称使用保留字是更好的选择。
根据需要更改要创建的表的名称,并遵守规则和命名约定。
答案 1 :(得分:0)
最佳解决方案是使用echo语句输出您尝试运行的查询。然后你可以自己测试并找到问题所在。另外一点,您的查询失败了,因为您没有在表名周围添加反引号。
您的代码非常不安全,会导致sql注入。您需要使用mysql_real_escape_string()来转义表名。