php - 如何以一种形式将多个文本框发布到数据库

标签 php mysql forms post

我有这个脚本,我想将表单中的值发布到我的数据库中。我想将许多文本框发布到一种表单中。

问题是,只有最后一个文本框得到更新。

<form action='' method='post'>
<?php
    for ($i=0; $i<$count; $i++) {
        echo "<input type='text' name='".$i."' />
        <input type='hidden' name='img_id' value='".$img_id."' />
        <input type='hidden' name='loop' value='".$i."' />";
    }
?>
<input type='submit' value='Update' name='update' /></form>
<?php 
    if (isset($_POST['update'])) {
        //now i need help
        $query = "UPDATE photos SET description = '".$_POST[$_POST['loop']]."' WHERE id = '".$img_id."'";
        $res = mysql_query($query) or die(mysql_error);
    }
?>

例如,循环 4 次,这意味着我有 4 个文本框。

在我的脚本中(此处未完全编写),代码仅将最后一个循环更新到数据库中。

最佳答案

首先,您需要对 HTML 中的 name 属性使用 PHP 数组表示法。否则,您将有多个具有相同名称的输入,并且只会发布其中一个

echo "<input type='text' name='".$i."' />
      <input type='hidden' name='img_id[]' value='".$img_id."' />
      <input type='hidden' name='loop[]' value='".$i."' />";

现在您可以在 PHP 中以数组的形式访问这些元素。

foreach ($_POST['img_id'] as $key=>$value) {
    // img_id's value is in $value
    // loop's value is in $_POST['loop'][$key]
}

使用 foreach 构建查询,并在循环后执行所有查询。

<小时/>

您的查询对 SQL 注入(inject)是开放的。使用mysql_real_escape_string至少(更好的是:准备好的语句,这也将提高性能,因为您总是有相同的查询,只有不同的输入)。另请记住,mysql_* 函数是 officially deprecated因此不应在新代码中使用。您可以使用 PDO 或 MySQLi 代替。请参阅this answer on SO了解更多信息。

关于php - 如何以一种形式将多个文本框发布到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20594702/

相关文章:

javascript - 为什么没有插入<form>?

php - "Not sufficient permissions"谷歌分析 API 服务帐户

c# - 将 C# TripleDESCryptoServiceProvider 加密移植到 PHP

php - MySQL 选择查询

sql - 最好的mysql方法?

html - 水平对齐标签与输入文本

php - 使用php连接mongodb的字段

php - 多维 PHP 数组到 JSON 数组

mysql - 如何使用 mysqli_real_escape_string 转义单引号?

javascript - ng-repeat 行为异常,并且 ng-true-value 和 ng-false-value 无法正确工作