如何处理我的列名称需要比SQL中允许的更长?

时间:2015-09-23 05:49:26

标签: php sql html5 phpmyadmin

我在创建我的sql数据库时遇到了一些情况。我一直在研究一个有很多问题的调查问卷。我正在使用一个PHP脚本,当用户提交问卷时它自动创建表,并使用输入名称来命名表的列。

我认为一个很好的方法可以让我在以后查看提交时使用问题作为HTML输入的名称属性,以便当我查询它时,一切都在那里,我不会我不得不想知道哪个答案会回答哪个问题,或者来回看看其他问题。

我遇到的问题是SQL列名称的长度有限。我不知道到底有多长,但是在我缩短输入名称之前我遇到了错误。

所以我需要完成的是为输入使用较短的名称,因此它们对于sql列来说不会太长,但不知何故将它链接到另一个由实际名称组成的表,以便稍后我可以查询它们需要查看提交内容。有解决方法吗?

2 个答案:

答案 0 :(得分:2)

不要这样做。解决此问题的方法是将数据作为数据存储在实际列中,而不是动态生成表和列名。

例如,对于用户生成的调查问卷,您可能具有以下布局:

用户表:

id name
 1 john
 2 alice
 3 fred

问卷调查表:

id created_by_user_id questionnaire_name
 1 1                  Animal Questionnaire
 2 3                  Tree Questionnaire
 ...

问题表:

id questionnaire_id question
 1 1                How many pets do you own?
 2 1                Have you ever owned a goldfish?
 3 1                Do you like cows?
 4 2                How many trees are in your back yard?
 5 2                When did you last see a silver birch?
 ...

答案表

 id questionnaire_id question_id user_answered_id answer_text
  1                1           1                2 Four
  2                1           2                2 No
  3                1           3                2 I love cows!
  4                1           3                3 I hate cows.

这样,每种类型的事实只需要一个表,您不必动态生成表或列,并且可以为数据存储尽可能多的文本。

答案 1 :(得分:0)

通常,最大长度为128个字符,但根据您使用的SQL版本有例外。