Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在页面只显示一列的情况下更新3个表列_Php_Mysql - Fatal编程技术网

Php 如何在页面只显示一列的情况下更新3个表列

Php 如何在页面只显示一列的情况下更新3个表列,php,mysql,Php,Mysql,这是一个表列,显示消息取决于用户在数据库中首选的语言选择。如果首选语言为英语,则仅限英语 消息将显示 在数据库中,有3列存储了3种不同语言的消息类型 <?php $possibleLang = ["繁體","简体","ENG"]; $testAreaField = ["traditionalmessage","simplifiedmessage","engmessage"]; $treatmentName = ["vaccinename1","vaccinename2","vacc

这是一个表列,显示消息取决于用户在数据库中首选的语言选择。如果首选语言为英语,则仅限英语 消息将显示 在数据库中,有3列存储了3种不同语言的消息类型

 <?php
 $possibleLang = ["繁體","简体","ENG"];
 $testAreaField = ["traditionalmessage","simplifiedmessage","engmessage"];
 $treatmentName = ["vaccinename1","vaccinename2","vaccinename3"];
 $treatmentNameSuffix = ["\n下一個注射期為:","\n下一个注射期为:","\nNext 
 injection period will be:"];

 $index = array_search($row['language'],$possibleLang);
 ?>
<td>
<textarea  rows="3" cols="18" class="url" name="<?php echo 
 $testAreaField[$index]; ?>[]" data-value="<?php echo 
 $row[$treatmentName[$index]] . $treatmentNameSuffix[$index]; ?>"><?php echo 
 $row[$testAreaField[$index]]; ?>
 </textarea>
 </td>
问题是每当我单击save(保存)时,消息中只有一列被保存,其他两列在数据库中被更新为NULL。理想的结果是更新两个3列,而页面上只有1列可见。
任何想法。提前感谢

请勿更新未作为更新目标的列。例如,如果选择了传统消息,则仅更新此列。我可能会在这里使用单独的查询

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());
    }
}

请注意,我相信您正在使用一个非常旧的、不推荐使用的PHP API for MySQL。对于初学者来说,使用预先准备好的语句会让您受益匪浅。

您检查过变量是否有数据吗?。您好,我尝试过用您的解决方案更新我的代码,但由于某些原因,结果与以前一样,其他2列仍然更新为null,请查看,感谢您检查null和空字符串。
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());
    }
}