使用foreach循环用ID数组更新MySQL表

时间:2018-01-22 22:45:41

标签: php mysql arrays

我尝试使用foreach循环使用三个列(id,franchise_id,state_id)更新MySQL数据库中的数据。该表更新但与franchise_id匹配的四行正在使用数组中的最后一项(4)进行更新。我无法弄清楚错误的位置。

传递给函数的数据:

$states = [1,2,3,4];
$franchise_id = 5;

更新功能:

public static function update($franchise_id, $states)
{

    try
    {
        // establish db connection
        $db = static::getDB();

        $sql = "UPDATE franchise_states SET state_id = ? WHERE franchise_id = ?";
        $stmt = $db->prepare($sql);
        foreach($states as $state)
        {
            $stmt->execute([$state, $franchise_id]);
        }
        return $stmt;
    }
    catch (PDOException $e)
    {
       echo "Error updating franchise data: " . $e->getMessage();
       exit();
    }
}

我感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

实际上它正在更新$ states数组中的所有值,但最后一个值仍然存在,因为它是最后一个执行的值。

您尝试使用相同的值franchise_id=5更新state_id,并且由于所有这些值都具有相同的特许经营权ID,因此最后一个值仍然存在。

答案 1 :(得分:-2)

您是否尝试编辑此行?



foreach($states as $state)






foreach($state as $states)