首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL数据库中放置多个复选框答案

问在MySQL数据库中放置多个复选框答案
EN

Stack Overflow用户
提问于 2013-06-05 04:35:25
回答 3查看 504关注 0票数 0

我有一个复选框,要求用户输入他/她最喜欢的课程。我想将所有选定的课程存储在MySQL数据库中由分隔符分隔的一列中

这就是我把它插入mysql数据库的方式。我该怎么做呢?

代码语言:javascript
复制
$sql="INSERT INTO Students(FirstName, LastName,gender,Major,Favorite_courses,GPA,Date_of_reg)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[sex]','$_POST[major]','$_POST[favorite]','$_POST[GPA]',SYSDATE())";

$_POSTfavorite是有问题的字段。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-05 04:37:27

代码语言:javascript
复制
$sql="INSERT INTO Students(FirstName, LastName,gender,Major,Favorite_courses,GPA,Date_of_reg) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[sex]','$_POST[major]','implode(\',\',$_POST[\'favorite\'])','$_POST[GPA]',SYSDATE())";
票数 3
EN

Stack Overflow用户

发布于 2013-06-05 04:52:00

如果您真的想将所有喜欢的课程放在一个字段中,可以将此字段设置为字符串,并通过序列化将PHP数组存储在其中。您可以使用serialize()函数,或者JSON、json_encode()或任何其他类似的方法。要检索数据,只需使用unserialize()或json_decode(),就可以让数组返回到PHP语言中。

但请记住,使用SELECT语句来过滤喜欢course foo或course bar的人将是相当困难的。最好的方法是遵循jeroen的建议,规范化您的数据。

票数 2
EN

Stack Overflow用户

发布于 2013-06-05 05:41:38

好吧,出于安全和规范化的原因,你不应该这么做。

但是,如果您确实想要这样做,可以使用php的serialize()函数。

代码语言:javascript
复制
$myFavorites = serialize($_POST[favorite]);
$sql="INSERT INTO Students  (FirstName, LastName, gender, Major, Favorite_courses, GPA, Date_of_reg) VALUES
('$_POST[firstname]' ,'$_POST[lastname]' ,'$_POST[sex]' ,'$_POST[major]', '$myFavorites', '$_POST[GPA]', SYSDATE())";

在从数据库中获取数据后,您可以使用以下命令对其进行反序列化

代码语言:javascript
复制
$serializedCourses = myFunctionToGetItFromMyDatabase();
$unserializedCourses = unserialize($serializedCourses);

我要做的是在您的数据库中为课程创建另一个表,并通过用户的id将其链接到用户。例如,您可以创建与课程类型一样多的列,这将使您能够轻松地获得喜欢数学(例如)甚至数学和几何的人的列表。

使用您的解决方案,您将无法轻松做到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16926988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档