所以我有这些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()
函数,但我认为它不是最好的解决方案,它会导致大量错误,特别是大数据。
所以我希望有一个更好的解决方案来存储数据库中的数组,
提前谢谢:)
答案 0 :(得分:1)
你根本不应该。这不仅违反了关系数据库设计的First normal form,而且当所有连接应该是你的&#34;体验&#34;时,你也可能成为对齐错误的牺牲品。 entity是数组索引计数器。
例如:如果并非所有字段都是必填字段,那么空表单条目是否会创建一个空数组值?这可能取决于提交表单的客户端(浏览器)。
在任何情况下,它都是糟糕的数据库设计,你应该考虑将这个概念建模为UserExperience或类似的,并将它连接到用户。