[英]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.