使用一组数组更新数据库

时间:2016-05-18 16:24:15

标签: php mysql arrays multidimensional-array

所以我有这个代码来更新我的数据库中的表。 $C1$C2等是先前计算的一组数组:

    $Cupdate = array($C1, $C2, $C3, $C4, $C5, $C6);

    array_unshift($Cupdate, null);
    $Cfinalupdate = call_user_func_array('array_map', $Cupdate);

    if(is_array($Cfinalupdate)){
        $valuesArr = array();
        foreach($Cfinalupdate as $row){
            $sqlup = "UPDATE tempselect SET ";

            $C1up = mysql_real_escape_string( $row['0'] );
            $C2up = mysql_real_escape_string( $row['1'] );
            $C3up = mysql_real_escape_string( $row['2'] );
            $C4up = mysql_real_escape_string( $row['3'] );
            $C5up = mysql_real_escape_string( $row['4'] );
            $C6up = mysql_real_escape_string( $row['5'] );

            $valuesArr[] = "C1 = '$C1up', C2 = '$C2up', C3 = '$C3up', C4 = '$C4up', C5 = '$C5up', C6 = '$C6up'";
            $sqlup .= implode(',', $valuesArr);
            mysql_query($sqlup) or exit(mysql_error()); 
        }
    }

但上面的代码只放了$Cfinalupdate的最后一行,假设我想更新我的数据库就像这样:

C1   C2   C3   C4   C5   C6
1    4    2    3    1    5
6    2    4    1    2    7
8    1    2    5    4    6

但是当我在数据库表中看到时,结果却是这样:

C1   C2   C3   C4   C5   C6
8    1    2    5    4    6
8    1    2    5    4    6
8    1    2    5    4    6

我已经尝试将此代码INSERT一组数组导入数据库,但它运行完美,但为什么它只更新数组的最后一行?谢谢。

1 个答案:

答案 0 :(得分:0)

这很简单......

正如Fred -ii-所说:

WHERE子句指定应更新的记录。如果省略WHERE子句,则所有记录都将更新!

更多信息:W3Schools - SQL UPDATE Statement