Cómo actualizar columnas de 3 tablas mientras que solo una columna es visible para la página

Esta es una columna de tabla que muestra el mensaje depende de la elección del idioma preferido por el usuario en la base de datos. por ejemplo, si el idioma preferido es ENG, solo el mensaje eng mostrará PS: en la base de datos, hay 3 columnas que almacenan 3 tipos de mensajes de diferentes idiomas

  <textarea rows="3" cols="18" class="url" name="[]" data-value="">   

Esta tabla se encuentra en una página de edición que muestra datos de DB y también actualiza los datos a la base de datos.

  if (isset($_POST['submit'])){ foreach ($_POST['patientid'] as $index => $patientid) { $id = mysql_real_escape_string($_POST['id'][$index]); $data1 = mysql_real_escape_string($patientid); $data17 = mysql_real_escape_string($_POST['patienthkid'][$index]); $data2 = mysql_real_escape_string($_POST['vaccineid'][$index]); $data5 = mysql_real_escape_string($_POST['vaccinename3'][$index]); $data6 = mysql_real_escape_string($_POST['totalnoofinjection'][$index]); $data7 = mysql_real_escape_string($_POST['nthinjection'][$index]); $data8 = mysql_real_escape_string($_POST['date'][$index]); $data9 = mysql_real_escape_string($_POST['nextdate'][$index]); $data10 = mysql_real_escape_string($_POST['skip'][$index]); $data11 = mysql_real_escape_string($_POST['language'][$index]); $data12 = mysql_real_escape_string($_POST['traditionalmessage'][$index]); $data13 = mysql_real_escape_string($_POST['simplifiedmessage'][$index]); $data14 = mysql_real_escape_string($_POST['engmessage'][$index]); $data15 = mysql_real_escape_string($_POST['status'][$index]); $data16 = mysql_real_escape_string($_POST['nurse'][$index]); if ($data12 != null) { mysql_query("UPDATE patientvaccinedetail SET patientid ='$data1',patienthkid ='$data17',vaccineid='$data2',vaccinename3='$data5', totalnoofinjection='$data6',nthinjection='$data7', date='$data8',nextdate='$data9',skip='$data10',language='$data11', traditionalmessage='$data12',status='$data15',nurse='$data16' WHERE id=$id") or die(mysql_error()); } else if ($data13 != null) { mysql_query("UPDATE patientvaccinedetail SET patientid ='$data1',patienthkid ='$data17',vaccineid='$data2',vaccinename3='$data5', totalnoofinjection='$data6', nthinjection='$data7',date='$data8',nextdate='$data9', skip='$data10',language='$data11', simplifiedmessage='$data13',status='$data15',nurse='$data16' WHERE id=$id") or die(mysql_error()); } else if ($data14 != null) { mysql_query("UPDATE patientvaccinedetail SET patientid ='$data1',patienthkid ='$data17',vaccineid='$data2', vaccinename3='$data5', totalnoofinjection='$data6', nthinjection='$data7',date='$data8',nextdate='$data9', skip='$data10',language='$data11', engmessage='$data14',status='$data15',nurse='$data16' WHERE id=$id") or die(mysql_error()); } } } 

Los problemas son cada vez que hago clic en guardar y only one columna del mensaje se guarda, otras dos columnas se actualizan como NULL en la base de datos. El resultado deseado es la actualización de las 3 columnas, mientras que solo 1 columna es visible para la página. Alguna idea. Gracias por adelantado

No actualice las columnas que no están siendo orientadas para la actualización. Por ejemplo, si se seleccionó el mensaje tradicional, entonces actualizaría solo esta columna. Probablemente usaría consultas separadas aquí.

 foreach ($_POST['patientid'] as $index => $patientid) { $id = mysql_real_escape_string($_POST['id'][$index]); $data1 = mysql_real_escape_string($patientid); $data2 = mysql_real_escape_string($_POST['traditionalmessage'][$index]); $data3 = mysql_real_escape_string($_POST['simplifiedmessage'][$index]); $data4 = mysql_real_escape_string($_POST['engmessage'][$index]); if ($data2 != null && $data2 != '') { mysql_query("UPDATE table SET patientid ='$data1', traditionalmessage='$data2' WHERE id=$id") or die(mysql_error()); } else if ($data3 != null && $data3 != '') { mysql_query("UPDATE table SET patientid ='$data1', simplifiedmessage='$data3' WHERE id=$id") or die(mysql_error()); } else if ($data4 != null && $data4 != '') { mysql_query("UPDATE table SET patientid ='$data1', engmessage='$data4' WHERE id=$id") or die(mysql_error()); } } 

Tenga en cuenta que creo que está utilizando una API PHP muy obsoleta y obsoleta para MySQL. Para empezar, te beneficiaría mucho usar declaraciones preparadas.