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