php - 在循环内将数组数据更新到数据库

标签 php mysql arrays

我在更新多个与数据库同名的值时遇到问题。

//while loop
{
<input  name="exists[]" value='$row1[Status_Name]'></input>
}

下面是我如何将数据更新到数据库

if (isset($_POST["updsts"]))
{
    $gid = $_POST["id"];

    $sqlq = "SELECT * FROM orderstatus WHERE Status_Group = '$gid'";

    $result = mysqli_query($conn, $sqlq);

    $rowcount = mysqli_num_rows($result);

    if ($rowcount == 0)
    echo "No records found";        
    else 
    {
        $x = '0';

        while( $x<$rowcount)
        {
            $stsname = $_POST["exists[$x]"];

            $sqlu = "UPDATE orderstatus SET 
            Status_Name = '$stsname'
            WHERE Status_Group = '$gid'";

            $x++;
        }
}

我的$row1[Status_Name]将显示表中的所有status_name。

最佳答案

您可以循环遍历 post 数组键:

foreach ($_POST['exists'] as $val) {
  // Do your updates here
}

此外,此代码还有许多您应该注意的其他严重问题。

  • 您不会转义 HTML 上下文中使用的任何数据。对要连接到 HTML 中的任意数据使用 htmlspecialchars()。否则,您将面临创建无效 HTML 以及注入(inject)脚本潜在安全问题的风险。
  • 您不会转义查询中使用的任何数据!就目前而言,几乎任何人都可以对数据库数据做任何他们想做的事情。自动化机器人总是攻击这类脚本并利用它们。始终使用参数化查询。切勿将数据连接到查询上下文中!
  • 不需要这个选择然后更新循环。只需使用一次更新即可。

关于php - 在循环内将数组数据更新到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44124852/

相关文章:

php - XAMPP 中的 MySqli 连接

java - COGNOS - XQE-JDB-0004 查找驱动程序类 "com.mysql.jdbc.Driver"时出现问题

c# - 在 'circular' 数组中寻找下一个位置

java - 在Java中显示带有括号和逗号的数组输出?

php - 如何为使用 laravel 表单构建器创建的选择标签的选项指定 HTML 属性?

PHP取消设置数组中的数据

php 回调(如 jQuery)?

php - 如何在 Yii2 中使用 ActiveQuery 进行子查询

php - 当用户失去文本区域的焦点时更新 mysql 中的表?

arrays - Java 8 Streams - 从对象列表中获取不同的整数作为数组