簡體   English   中英

將數組存儲在數據庫中並將其作為數組從數據庫取回的最佳方法

[英]best way to store an array in database and getting it back as array from database

因此,我有這些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_name job_title start_date end_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()函數,但我認為它不是最佳解決方案,尤其對於大數據,它會出現很多錯誤。 所以我希望是否有更好的解決方案將數組存儲在數據庫中,在此先感謝:)

您根本不應該。 這不僅違反了關系數據庫設計的第一種常規形式 ,而且當所有連接應為“體驗”實體的東西都是數組索引計數器時,您也可能成為對齊錯誤的受害者。

例如:如果不是所有字段都是必填字段,那么空表單條目會創建一個空數組值嗎? 這可能取決於提交表單的客戶端(瀏覽器)。

無論如何,這都是不好的數據庫設計,您應該真正考慮將此概念建模為UserExperience或類似內容,並將其與用戶進行多對一連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM