php - for 循环,$i 等于同一循环中的两个不同值

标签 php mysql

我有一个从 mysqli->query 生成的小表单,我将每个输入名称设置为一个数组,例如 name="Shift_ID[]"。然后我有一个 for loop 用于在循环时一次UPDATE 记录。我遇到的问题是 $i 变量在同一个循环中是不同的值,我不明白为什么。这是我的代码:

if(isset($_POST['update_submit']))
{
    $id = $_POST['Shift_ID'];
    $name = $_POST['Shift_Name'];
    $short_name = $_POST['Shift_Short_Name'];
    $color  = $_POST['Shift_Color'];
    $shift_total_records = "5";

    for($i = 0; $i <= $shift_total_records; $i++) 
    {
        $sql = ("UPDATE shift SET Shift_ID = '$id[$i]', Shift_Name = '$name[$i]', Shift_Short_Name = '$short_name[$i]', Shift_Color = '$color[$i]' WHERE Shift_ID = '$i'");

        echo "SQL: " . $sql . "<br>";

        if(!$result_shift_update = $mysqli->query($sql))
        {
            die ('There was an error updating the shift table [' . $mysqli->error . ']');
        }
    }
}

echo 返回这个:

SQL: UPDATE shift SET Shift_ID = '1', Shift_Name = 'Morning', Shift_Short_Name = 'AM', Shift_Color = '#FF0000' WHERE Shift_ID = '0'

我期待 Shift_ID = '1'WHERE Shift_ID = '1'。有人可以解释为什么会这样吗?另外,在有人说之前,我知道这容易受到注入(inject)攻击,我需要使用准备好的语句。

*编辑:*我拥有它的原因 Shift_ID = '$id[$i]'WHERE Shift_ID = '$i' 是因为我希望用户能够根据需要更改 Shift_ID 字段。重点是可以选择重新排列顺序。 Shift_IDPRIMARY KEY,所以如果他们尝试使用相同的数字两次,他们会得到一个错误,但是有没有办法让它做我想做的事?

最佳答案

第一个 '1' 是 $id[$i] 而不是 $i - 这里没有明显的问题。

关于php - for 循环,$i 等于同一循环中的两个不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13583030/

相关文章:

php - 如何在加载网页之前检查 Chrome 中的初始互联网连接

mysql 查询但是两个不同的组依据

MySQL 删除表

javascript - 如何以及在何处将 CSS 和 JS 文件包含在 NETTE 框架中?

php - 给定圆心坐标、半径和扫描角,如何计算圆弧的终点坐标?

php - MySQL中带有enum函数的Cakephp输入框

php - mysql查询选择一列,其中 ""仅返回一个结果

phpMyAdmin 通过 http 登录

mysql - 返回序列号列表的 3 个最近记录

mysql 搜索前缀 "the"或 "and/&"歧义