我尝试使用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();
}
}
我感谢任何帮助。
谢谢!
答案 0 :(得分:2)
实际上它正在更新$ states数组中的所有值,但最后一个值仍然存在,因为它是最后一个执行的值。
您尝试使用相同的值franchise_id=5
更新state_id,并且由于所有这些值都具有相同的特许经营权ID,因此最后一个值仍然存在。
答案 1 :(得分:-2)
您是否尝试编辑此行?
foreach($states as $state)

到
foreach($state as $states)