У меня есть массив с именами, разностями целей и т. Д. Для футбольных команд, которые я хочу поместить в таблицу, но во время foreach последний ключ в массиве каким-то образом изменяется ,Обновление базы данных с помощью foreach меняет массив перед обновлением
Последние два ключа до Еогеасп
[18] => Array
(
[team_code] => 4
[team_name] => Newcastle
[points] => 6
[goals_for] => 12
[goals_against] => 22
[goal_difference] => -10
)
[19] => Array
(
[team_code] => 7
[team_name] => Aston Villa
[points] => 4
[goals_for] => 9
[goals_against] => 17
[goal_difference] => -8
)
)
После Еогеасп
[18] => Array
(
[team_code] => 4
[team_name] => Newcastle
[points] => 6
[goals_for] => 12
[goals_against] => 22
[goal_difference] => -10
)
[19] => Array
(
[team_code] => 4
[team_name] => Newcastle
[points] => 6
[goals_for] => 12
[goals_against] => 22
[goal_difference] => -10
)
)
Мой Еогеасп выглядит следующим
foreach ($teams as $team) {
$team_code = $team['team_code'];
$team_name = $team['team_name'];
$points = $team['points'];
$goals_for = $team['goals_for'];
$goals_against = $team['goals_against'];
$goal_difference = $team['goal_difference'];
if ($update_query = $conn->query("UPDATE teams SET points = $points, goals_for = $goals_for, goals_against = $goals_against, goal_difference = $goal_difference WHERE team_code = $team_code")) {
echo 'Updated '.$team_name.'<br>';
} else {
$update_query->error;
}
}
Почему изменяется последний ключ? Это происходит до выполнения запроса, потому что строка не обновляется. Все остальные обновляют, как должны.
Вы используете [ссылку] (http://php.net/manual/en/language.references.php) где-то рядом с этим фрагментом кода? – VolkerK
Поместите некоторые echo/print_r/var_dump и проверьте свои выходы и инструкции SQL ... –
Спасибо @VolkerK, вот и все. Странное поведение, я думаю. –