-1

有人可以告诉我下面这堆非常简单的 SQL 代码有什么问题吗?我正在尝试使用 PHP 和 mysql。

     // Create table
     $tname=$_POST["appname"];

     $creatt="CREATE TABLE $tname
      (
       AppVersion VARCHAR(30),
       AppType VARCHAR(30),
       FileName VARCHAR(255),
       AppSize FLOAT,
       sizetype VARCHAR(30),
       apppart FLOAT,
       appLRadress VARCHAR(255),
       appSRadress VARCHAR(255),
       appRadress VARCHAR(255),
       apptahye DATE(),
       appupload DATE(),
       appfenally DATE(),
       status CHAR(30),
       applearn CHAR(30),
       applearnadd VARCHAR(255),
       applearnudate DATE(),
       learntype VARCHAR(30),
       appcrack CHAR(30),
       appcrackadd VARCHAR(255),
       appcrackdate DATE(),
       cracktype CHAR(30)
      )";


   // Execute query
     if (mysqli_query($con,$creatt))
       {
      echo "Table $tname created successfully";
        }
      else
        {
         echo "Error creating table: " . mysqli_error($con);
        }

发生此错误:

创建表时出错:您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'photoshop ( AppVersion VARCHAR(30)、AppType VARCHAR(30)、FileName VARCHAR' 附近使用正确的语法

但是当我像这样使用较少的列时:

  $tname=$_POST["appname"]; 
  $creatt="CREATE TABLE `$tname`(FirstName CHAR(30),LastName CHAR(30),Age INT)"; 

有用!!!!

我的列有什么问题?

4

3 回答 3

0

抱歉浪费你的时间!!!问题是一些括号,要创建一个日期列,在 DATE 前面不应该有 () !我刚刚删除了那些问题就解决了!!很抱歉打扰你,那是我的错。

于 2013-07-23T18:39:38.677 回答
0

检查sql小提琴链接

http://sqlfiddle.com/#!2/0060c

 $tname=addslashes($_POST["appname"]);

 $creatt="CREATE TABLE `$tname`
      (
       AppVersion VARCHAR(30),
       AppType VARCHAR(30),
       FileName VARCHAR(255),
       AppSize FLOAT,
       sizetype VARCHAR(30),
       apppart FLOAT,
       appLRadress VARCHAR(255),
       appSRadress VARCHAR(255),
       appRadress VARCHAR(255),
       apptahye DATE,
       appupload DATE,
       appfenally DATE,
       status CHAR(30),
       applearn CHAR(30),
       applearnadd VARCHAR(255),
       applearnudate DATE,
       learntype VARCHAR(30),
       appcrack CHAR(30),
       appcrackadd VARCHAR(255),
       appcrackdate DATE,
       cracktype CHAR(30)
      );
于 2013-07-23T08:53:44.170 回答
0

显然,而不是$tname你进入"'photoshop"你的 SQL 字符串。因此,您应该检查并清理用户输入。

CREATE TABLE 'photoshop
      (
       AppVersion VARCHAR(30),
        ....
       cracktype CHAR(30)
      );
于 2013-07-23T09:02:45.207 回答