【问题标题】:best way to store an array in database and getting it back as array from database将数组存储在数据库中并将其作为数组从数据库中取回的最佳方法
【发布时间】:2016-08-15 12:02:18
【问题描述】:

所以我有这些 html 输入,我可以用 javascript 重新生成它们以允许用户输入他的经验历史记录,所以假设这段代码像这样生成了两次

<!-- User Experiense 1 -->
<label>Company Name</label>
<input type="text" class="form-control" name="company_name[]">

<label for="job-title">Job Title</label>
<input type="text" class="form-control" name="job_title[]">

<label for="dates">From</label>
<input type="date" class="form-control" name="start_date[]">

<label for="dates">To</label>
<input type="date" class="form-control" name="end_date[]">

<!-- User Experiense 2 -->
<label>Company Name</label>
<input type="text" class="form-control" name="company_name[]">

<label for="job-title">Job Title</label>
<input type="text" class="form-control" name="job_title[]">

<label for="dates">From</label>
<input type="date" class="form-control" name="start_date[]">

<label for="dates">To</label>
<input type="date" class="form-control" name="end_date[]">

这些是数据库中的列company_namejob_titlestart_dateend_date

这里是php代码

$js_company_name = [];
if(isset($_POST['js_company_name'])){   
   foreach($_POST['js_company_name'] as $selected) {
     $js_company_name[] = $selected ;
  }
}

$js_job_title = [];
if(isset($_POST['job_title'])){
   foreach($_POST['job_title'] as $selected) {
      $job_title[] = $selected;
   }
 }

$start_date= [];
if(isset($_POST['start_date'])){
   foreach($_POST['start_date'] as $selected) {
      $start_date[] = $selected;
   }
 }

$end_date= [];
if(isset($_POST['end_date'])){
   foreach($_POST['end_date'] as $selected) {
      $end_date[] = $selected;
   }
 }

我尝试使用 serialize()unserialize() 函数,但我认为它不是最好的解决方案,它会出现很多错误,尤其是对于大数据。 所以我希望是否有更好的解决方案将数组存储在数据库中, 在此先感谢:)

【问题讨论】:

  • 尝试在数据库中以json格式存储数据
  • 请问怎么样 :)
  • nosql: mongodb.com
  • 依我的拙见,您应该将每个体验插入到不同的行中,将来您可以轻松地报告、搜索、收集或分组等
  • 我认为json_encode()serialize() 有同样的问题,感谢您的回答@NikhilVaghla

标签: php html sql arrays mysqli


【解决方案1】:

你根本不应该。这不仅违反了关系数据库设计的First normal form,而且当连接应该是您的“体验”实体的所有东西都是数组索引计数器时,您还可能成为对齐错误的受害者。

例如:如果不是所有字段都是必需的,那么空的表单条目会创建一个空数组值吗?这可能取决于提交表单的客户端(浏览器)。

无论如何,这是糟糕的数据库设计,您应该真正考虑将此概念建模为 UserExperience 或类似的概念,并将其多对一连接到用户。

【讨论】:

  • 所以您建议在数据库中创建另一个表以供用户体验? @YetiCGB
  • 没错。另请查看3NF 和关系数据库建模原则。
  • 我认为这将是唯一的解决方案,我只是不想在多个表中分离用户数据,因为用户体验不是我需要以这种方式存储的唯一数据,有也是教育!所以在这个解决方案中至少有 3 个用户数据表@YetiCGN
  • 不要害怕更多的表并且不得不大量使用JOIN!这正确的方法。 :-)
  • 谢谢我的朋友 :)
猜你喜欢
  • 2012-03-07
  • 1970-01-01
  • 2016-11-15
  • 2020-01-15
  • 2014-02-18
  • 2016-08-09
  • 2011-06-26
  • 1970-01-01
  • 2011-10-10
相关资源
最近更新 更多