Php 循环通过对象的有效方法
在我的页面中有一个部分,你可以添加、编辑或删除学校的详细信息,在用户点击enter之前,它不应该将条目保存到数据库中,所以我首先将所有数据保存在一个对象中。我的对象如下所示:Php 循环通过对象的有效方法,php,object,Php,Object,在我的页面中有一个部分,你可以添加、编辑或删除学校的详细信息,在用户点击enter之前,它不应该将条目保存到数据库中,所以我首先将所有数据保存在一个对象中。我的对象如下所示: schooldetails : { "1": { "school_ctr":"schoolctr_1", "school":"Fiat Lux Academe", "course":"", "qualification":"High School", "date_grad":"0
schooldetails : {
"1": {
"school_ctr":"schoolctr_1",
"school":"Fiat Lux Academe",
"course":"",
"qualification":"High School",
"date_grad":"06/04/2008",
"notes":"*graduated with honors",
"deleted":0
},
"2": {
"school_ctr":"schoolctr_2",
"school":"College of St. Benilde",
"course":"Computer Science",
"qualification":"Bachelor / College",
"date_grad":"06/05/2012",
"notes":"",
"deleted":0
},
"3":{
"school_ctr":"schoolctr_3",
"school":"Siliman University",
"course":"Information Technology",
"qualification":"Post Graduate / Master",
"date_grad":"06/06/2014",
"notes":"",
"deleted":0
}
}
if (!empty($school_details_new)) {
foreach ($school_details_new as $key => $value) {
$s_name = mysql_real_escape_string($value['school']);
$s_degree = mysql_real_escape_string($value['course']);
$s_type = mysql_real_escape_string($value['qualification']);
$s_enddate = mysql_real_escape_string($value['date_grad']);
$s_notes = mysql_real_escape_string($value['notes']);
$sql = "INSERT INTO `SchoolDetails` (`personID`, `School`, `Type`, `End_Date`, `Degree`, `Notes`) VALUES ($id, '$s_name', '$s_type', '$s_enddate', '$s_degree', '$s_notes');";
$res_sql = mysql_query($sql);
}
我通过ajax传递了它,我能够通过以下代码保存信息:
if(!empty($school_details_new)){
foreach($school_details_new as $key => $value) {
foreach($value as $school_data => $data_values) {
if($school_data == "school")
$s_name = mysql_real_escape_string($data_values);
if($school_data == "course")
$s_degree = mysql_real_escape_string($data_values);
if($school_data == "qualification")
$s_type = mysql_real_escape_string($data_values);
if($school_data == "date_grad")
$s_enddate = mysql_real_escape_string($data_values);
if($school_data == "notes")
$s_notes = mysql_real_escape_string($data_values);
}
$sql = "INSERT INTO `SchoolDetails` (`personID`, `School`, `Type`, `End_Date`, `Degree`, `Notes`) VALUES ($id, '$s_name', '$s_type', '$s_enddate', '$s_degree', '$s_notes');";
$res_sql = mysql_query ($sql);
}
}
这实际上对我来说很好,我没有任何错误或任何东西,但我相信有一种更有效的方法可以做到这一点,而不需要很多if语句。思想?提前谢谢。您可以这样做:
schooldetails : {
"1": {
"school_ctr":"schoolctr_1",
"school":"Fiat Lux Academe",
"course":"",
"qualification":"High School",
"date_grad":"06/04/2008",
"notes":"*graduated with honors",
"deleted":0
},
"2": {
"school_ctr":"schoolctr_2",
"school":"College of St. Benilde",
"course":"Computer Science",
"qualification":"Bachelor / College",
"date_grad":"06/05/2012",
"notes":"",
"deleted":0
},
"3":{
"school_ctr":"schoolctr_3",
"school":"Siliman University",
"course":"Information Technology",
"qualification":"Post Graduate / Master",
"date_grad":"06/06/2014",
"notes":"",
"deleted":0
}
}
if (!empty($school_details_new)) {
foreach ($school_details_new as $key => $value) {
$s_name = mysql_real_escape_string($value['school']);
$s_degree = mysql_real_escape_string($value['course']);
$s_type = mysql_real_escape_string($value['qualification']);
$s_enddate = mysql_real_escape_string($value['date_grad']);
$s_notes = mysql_real_escape_string($value['notes']);
$sql = "INSERT INTO `SchoolDetails` (`personID`, `School`, `Type`, `End_Date`, `Degree`, `Notes`) VALUES ($id, '$s_name', '$s_type', '$s_enddate', '$s_degree', '$s_notes');";
$res_sql = mysql_query($sql);
}
}这个问题可能更适合我说实话,我不认为你需要所有的if语句。您可以简单地设置变量并运行insert查询?不要使用mysql函数,因为它们已被弃用。还要在foreach循环外准备一条语句,然后在循环内使用值执行它。