【问题标题】:storing array data in mysql在mysql中存储数组数据
【发布时间】:2013-02-12 21:56:49
【问题描述】:

我是 PHP 和 MySQL 的新手,希望能得到您的帮助。 我有一个表,它根据用户选择的选项数量生成几行。 我想在用户按下提交按钮后将内容存储在数据库表中。 由于我不知道用户会选择多少选项以及将生成多少行,所以我不知道如何编写将其存储在我的数据库表中的 SQL 代码。

这是生成表格的代码

for($x=0;$x<$N; $x++) {

        echo nl2br("<td><textarea name=art[] rows=10 cols=30></textarea></td><td><textarea name=science[] rows=10 cols=30></textarea></td></textarea></td><td><textarea name=method[] rows=10 cols=30></textarea></td><td><textarea name=criteria[] rows=10 cols=30></textarea></td></tr>"); 
}

从表中获取数据

for($i = 0; $i <$N; $i++){
    $data[] = array(($art[$i]), ($science[$i]), ($method[$i]), ($criteria[$i]));
}

【问题讨论】:

标签: php mysql


【解决方案1】:

我会规范这个设计,并有一个 USER 和 OPTION 表,它们之间存在一对多的关系。以这种方式进行选择的行数与您的行数一样多。您可以稍后查询以查看有多少 USER 行选择了 OPTION X。

【讨论】:

  • 请您详细说明一对多的关系?如果可能的话举个例子。谢谢
  • 你应该比我更明白:一个用户可以选择零个或多个选项。您将在 USER 表中有一行,每个选定的 OPTION 都有一个行,OPTION 表中的外键指向 USER 主键。
【解决方案2】:

您可以合并(内爆)所有值并存储到表中。在检索时拆分(爆炸)值。

Store : 
$optionsVal = implode(",", $data);

Retrieve :
$data = explode(",", $optionsVal);

【讨论】:

    猜你喜欢
    • 2010-12-19
    • 1970-01-01
    • 2013-08-14
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2015-09-11
    相关资源
    最近更新 更多