首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新多个动态生成的输入字段

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

Stack Overflow用户
提问于 2014-01-24 02:12:04
回答 2查看 103关注 0票数 0

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

以下内容生成输入:

代码语言:javascript
复制
  <?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'] . "' />";
} ?>

如何修改foreach循环以使用WHERE子句中的$row_exon['exon_pk']更新每个输入字段?

代码语言:javascript
复制
foreach($_POST['exon_start'] as $start){    
$query_exon = "UPDATE exon SET start = '$start' WHERE exon_pk = ''";
$result_exon = mysql_query($query_exon, $connection) or die(mysql_error());
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-24 02:47:17

这很管用..。

代码语言:javascript
复制
 <?php 
while ($row_exon = mysql_fetch_assoc($result_exon)){
    echo "<input name='exon_start[". $row_exon['exon_pk'] . "]' type='text' value='" . $row_exon['start'] . "' />";
} ?>

在循环中:

代码语言:javascript
复制
foreach($_POST['exon_start'] as $key => $value){    
$query_exon = "UPDATE exon SET start = '$value' WHERE exon_pk = '$key'";
$result_exon = mysql_query($query_exon, $connection) or die(mysql_error());
票数 1
EN

Stack Overflow用户

发布于 2014-01-24 02:48:45

您还需要通过表单传递该值(假设这是POST表单)。现在,当您发布变量时,将只传递每个字段的名称和值,因此在您的示例中:

代码语言:javascript
复制
// pseudo/example
exon_start[] => each_value (start)

因此,您需要exon_pk start,您必须将它们连接在一起才能作为值传递。我将使用|作为分隔符,您可以使用任何您喜欢的,但确保它永远不会出现在这两个变量中:

代码语言:javascript
复制
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'] . "' />";
}

现在,当您发布时,您的数据将是:

代码语言:javascript
复制
// pseudo/example
exon_start[] => each_value (exon_pk|start)

所以你可以把它除以得到每个变量:

代码语言:javascript
复制
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扩展。

而且,这不是一个理想的做法(在我看来),因为通过将事物与分隔符连接在一起正在丢失粗略的结构化数据,而且正如我所说的,如果在任意一点--通过工作脚本--在任何一个变量中都有分隔符。

医生:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21323137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档