Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.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 更新多个动态生成的输入字段_Php - Fatal编程技术网

Php 更新多个动态生成的输入字段

Php 更新多个动态生成的输入字段,php,Php,我有一个表单来更新MySQL数据库表中动态生成的多个输入字段 以下内容生成输入: <?php while ($row_exon = mysql_fetch_assoc($result_exon)){ echo "<input name='exon_start[]' type='text' id='". $row_exon['exon_pk'] . "' value='" . $row_exon['start'] . "' />"; } ?> 这很有效

我有一个表单来更新MySQL数据库表中动态生成的多个输入字段

以下内容生成输入:

  <?php 
while ($row_exon = mysql_fetch_assoc($result_exon)){
    echo "<input name='exon_start[]' type='text' id='". $row_exon['exon_pk'] . "'  value='" . $row_exon['start'] . "' />";
} ?>
这很有效

 <?php 
while ($row_exon = mysql_fetch_assoc($result_exon)){
    echo "<input name='exon_start[". $row_exon['exon_pk'] . "]' type='text' value='" . $row_exon['start'] . "' />";
} ?>

您还需要通过表单传递该值(假定这是一个POST表单)。现在,当您发布变量时,只会传递每个字段的名称和值,因此在您的情况下:

// pseudo/example
exon_start[] => each_value (start)
因此,您需要
外显子pk
开始
,您必须将它们连接在一起作为值传递。我将使用
|
作为分隔符,您可以随意使用,但请确保它永远不会出现在这些变量中:

while ($row_exon = mysql_fetch_assoc($result_exon)){
    echo "<input name='exon_start[]' type='text' id='". $row_exon['exon_pk'] . "'  value='" . $row_exon['exon_pk'] . '|' . $row_exon['start'] . "' />";
}
因此,您可以拆分它以获得每个变量:

foreach($_POST['exon_start'] as $each_var){    
    list($exon_pk, $start) = explode('|', $each_var);
    $query_exon = "UPDATE exon SET start = '$start' WHERE exon_pk = '$exon_pk'";
    $result_exon = mysql_query($query_exon, $connection) or die(mysql_error());
}
旁注:有鉴于此,
mysql.*
扩展多年来一直被弃用,将来可能会被完全删除。您应该开始使用
mysqli.*
PDO
扩展

而且,在我看来,这并不是一件理想的事情,因为通过使用分隔符将事物连接在一起会丢失大致结构化的数据,正如我所说的,如果通过工作脚本在任何一个变量中使用分隔符,则会丢失这些数据

文件:

  • explode()
  • MySQLi
  • PDO

是的,它们是独一无二的,而且很有效。谢谢你的回答;->不用担心,如果方法是唯一的,那么您的方法更可取,这样您就不必连接任何数据。
while ($row_exon = mysql_fetch_assoc($result_exon)){
    echo "<input name='exon_start[]' type='text' id='". $row_exon['exon_pk'] . "'  value='" . $row_exon['exon_pk'] . '|' . $row_exon['start'] . "' />";
}
// pseudo/example
exon_start[] => each_value (exon_pk|start)
foreach($_POST['exon_start'] as $each_var){    
    list($exon_pk, $start) = explode('|', $each_var);
    $query_exon = "UPDATE exon SET start = '$start' WHERE exon_pk = '$exon_pk'";
    $result_exon = mysql_query($query_exon, $connection) or die(mysql_error());
}