【问题标题】:PHP multiple arrays into MySQL DatabasePHP多个数组到MySQL数据库
【发布时间】:2016-04-07 06:59:57
【问题描述】:

我有 ClinicDays 数组,其中包含从星期一到星期日的复选框值和诊所 id 值:

clinicDays[]:4|1
clinicDays[]:1|1

管道前的第一个数字是诊所的 id,管道右侧的最后一个数字是当天的数字,我想做的是如果 ClinicDays 有值,那么将值放入表中,如果旧值与新值不匹配,则删除旧值,如果 ClinicDays 数组为空,则删除与 $doctoridclinic_id 关联的所有行

插入值部分工作正常,但我无法让删除部分工作,可以指导我完成吗?

为此,我有 4 张桌子: 1-dg_clinics (id, Clinic_name) 2-dg_doctors (id, doctor_name) 3-dg_days (id, day_name) 4-dg_clinic_days (id, Clinic_id, doctor_id, day_id)

$doctorid = $_POST['doctor_doctorid'];

if(isset($_POST['clinicDays']))
{
    $clinics = array();
    foreach($_POST['clinicDays'] as $clinic_day_values){

        $clinic_day_values = explode("|", $clinicday);

        $q5 = "SELECT * FROM dg_doctors_clinic_days WHERE doctor_id = {$doctorid} AND clinic_id = {$clinic_day_values[0]} AND day_id = {$clinic_day_values[1]}";
        $getClinicDay = $db->query($q5);
        $num_days = mysql_num_rows($getClinicDay);

        if( $num_days == 0 ) {
            $q6 = "INSERT INTO dg_doctors_clinic_days (clinic_id,doctor_id,day_id,value,date_added) VALUES ({$clinic_day_values[0]},{$doctorid},$clinic_day_values[1],1,NOW())";
            $r6 = $db->query($q6);
        }
    }
    $items = implode(",", $_POST['checkAllClinics']);
    $q3 = "DELETE FROM dg_clinic_doctors WHERE doctor_id = {$doctorid} AND clinic_id = {} AND day_id NOT IN ({$items})";
    $r3 = $db->query($q3);

} else {
    $q8 = "DELETE FROM dg_doctors_clinic_days WHERE doctor_id = {$doctorid}";
    $r8 = $db->query($q8);
}

【问题讨论】:

  • 我刚刚添加了问题@cale_b

标签: php mysql arrays multidimensional-array


【解决方案1】:

我相信您可以简化代码并通过将删除移到开头来解决问题,这将始终执行(并且在插入之前),这样您就不必跟踪需要的记录已删除,您不必检查记录是否已存在。

根据您发布的代码,您总是删除所有天,除非它们仍然被发布,所以试试这个简化的代码:

$doctorid = $_POST['doctor_doctorid'];

// Delete the clinic days for the doctor.
$q8 = "DELETE FROM dg_doctors_clinic_days WHERE doctor_id = {$doctorid}";
$r8 = $db->query($q8);
// IF any clinic days are posted, save them....
if (isset($_POST['clinicDays'])) {
    foreach($_POST['clinicDays'] as $clinic_day_values) {
        // NOTE: The variable $clinicday is NOT being set, is this a typo in your original code?
        $clinic_day_values = explode("|", $clinicday);
        $q6 = "INSERT INTO dg_doctors_clinic_days (clinic_id,doctor_id,day_id,value,date_added) VALUES ({$clinic_day_values[0]},{$doctorid},$clinic_day_values[1],1,NOW())";
        $r6 = $db->query($q6);
    }
}

【讨论】:

  • 感谢您的帮助,但是,在您的代码中,您正在删除该医生的所有记录,我需要做的是删除该医生在该特定诊所的所有记录。例如:医生 A 可以在周一和周二在诊所 1 工作,但不能在诊所 2 工作 @cale_b
猜你喜欢
  • 1970-01-01
  • 2015-02-02
  • 2011-02-06
  • 1970-01-01
  • 2016-01-06
  • 2014-03-27
  • 2023-03-24
  • 1970-01-01
  • 2012-09-29
相关资源
最近更新 更多