У меня есть php-скрипт, который хранит данные о совпадении (и другие данные) в базе данных.Ранее я выполнял его через xml-файл с foreach и сохранял / обновлял каждую запись 1 за один раз.
Поскольку при обновлении более 3000 записей соответствий, для обновления потребуется более 45 секунд.полный.Поэтому я пытаюсь сделать это, используя один запрос, а не тысячи отдельных запросов.
$updateQuery = "";
$data = simplexml_load_file('$url');
foreach($data->match as $match) {
$matchId = intval($match->id);
$homeTeamName = $match->homeTeamName;
$homeTeamScore = intval($match->homeTeamScore);
$awayTeamScore = intval($match->awayTeamScore);
$awayTeamName = $match->awayTeamName;
// Check if record exists
$query = "SELECT `matchId` FROM `matches` WHERE `matchId` = " . $matchId;
$result = mysqli_query($mysqli,$query);
if(mysqli_num_rows($result) == 1 ){
$updateQuery .= "UPDATE `matches`
SET
`homeTeamName`='" . $homeTeamName . "',
`homeTeamScore`=" . $homeTeamScore . ",
`awayTeamScore`=" . $awayTeamScore . ",
`awayTeamName`='" . $awayTeamName . "'
WHERE `matchId`=" . $matchId . "; ";
} else {
$sql_statement="INSERT INTO `matches`
(`matchId`, `homeTeamName`, `homeTeamScore`, `awayTeamScore`, `awayTeamName`)
VALUES
(" . $matchId . ",
'" . $homeTeamName . "',
" . $homeTeamScore . ",
" . $awayTeamScore . ",
'" . $awayTeamName . "')";
mysqli_query($mysqli,$sql_statement);
}
}
mysqli_query($mysqli,$updateQuery);
Пожалуйста, игнорируйте два типа запросов (обновление / вставка), как только я получу обновление, я будуизменить запрос на вставку, чтобы он работал аналогично.
Я обнаружил, что при просмотре результата $ updateQuery я могу вручную выбрать его, поместить в запись phpmyadmin sql, и он работает, он обновляетсяthge записывает, поэтому создаваемый запрос не является проблемой (фрагмент ниже).Но когда я запускаю скрипт php, база данных не обновляется.
Фрагмент сгенерированного запроса: UPDATE matches
SET homeTeamName
= 'Manchester_United', homeTeamScore
= 2, awayTeamScore
= 1, awayTeamName
= 'Leicester_City', ГДЕ matchId
= 111981;ОБНОВЛЕНИЕ matches
SET homeTeamName
= 'AFC_Bournemouth', homeTeamScore
= 2, awayTeamScore
= 0, awayTeamName
= 'Cardiff_City' WHERE matchId
= 108933;
Чего мне не хватает?